Zum Inhalt springen

SQL Island Hilfe


König

Empfohlene Beiträge

Hallo, ich bräuchte Hilfe bei dem Spiel SQL Island.

Ich zitiere:

"Hallo, Dirty Dieter hält den Piloten im Haus seiner Schwester gefangen. Soll ich dir verraten, wie viele Frauen es in Zwiebelhausen gibt? Ach was, das kannst du schon selbst herausfinden! (Hinweis: Frauen erkennt man an geschlecht = 'w')"

Es gibt folgende Tabellen:

DORF (dorfnr, name, haeuptling)

BEWOHNER (bewohnernr, name, dorfnr, geschlecht, beruf, gold, status)

GEGENSTAND (gegenstand, besitzer)

Danke für alle Antworten. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was soll

Zitat

Bewohner.Dorf

denn bedeuten? Meintest du Bewohner,Dorf? Das ist zwar syntaktisch korrekt, aber inhaltlich verkehrt (weißt du, was das für ein Join ist, den du da ausführst?).

Geh das ganze doch in Schritten an:

1) Selektiere alle Frauen (SELECT * FROM Bewohner WHERE geschlecht = 'w')

2) Selektiere die ID des Dorfes Zwiebelhausen (SELECT dorfnr from Dorf WHERE name = 'Zwiebelhausen')

3) Kombiniere die beiden Anfragen (... WHERE (1) AND ... (2))

Das ist natürlich nicht perfekt und lässt sich eleganter lösen. Aber als erster Schritt sicher ganz hilfreich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @König!

Du brauchst Datensätze aus den Tabellen Dorf und Bewohner. Du verknüpfst die Tabellen über "dorfnr". 

Für die Wahl des richtigen JOINs lasse ich dir diesen exzellenten Artikel da. Der sollte helfen.

https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

Viel Spaß damit und

Gruß, Goulasz :goulasz: 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb König:

SELECT COUNT(*) FROM Bewohner.Dorf WHERE Bewohner.Geschlecht = 'w' AND Dorf.Name = 'Zwiebelhausen'

Sieht nicht so schlecht aus, nur gibt es kein "Bewohner.Dorf". Du willst von Bewohner und Dorf selektieren, also "Bewohner, Dorf" und dann noch verknüpfen:

SELECT COUNT(*) FROM Bewohner, Dorf WHERE Bewohner.Geschlecht = 'w' AND Dorf.name = 'Zwiebelhausen' AND Dorf.dorfnr = Bewohner.dorfnr

Es gibt bei Joins zwei Schreibweisen: implizit (dein erster Code) und explizit (dein zweiter Code, also das Join ausgeschrieben).

Bearbeitet von pr0gg3r
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb König:

Das wär dem Spiel zu einfach, das sollte alles in einer Abfrage stattfinden.

Daher ja auch Schritt 3

vor 3 Stunden schrieb arlegermi:

3) Kombiniere die beiden Anfragen (... WHERE (1) AND ... (2)) 

;)

Ich persönlich finde es bei komplexen Anfragen immer hilfreich, diese erst einmal einzeln zu erfassen und am Ende dann zusammenzuführen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...