Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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. :)

Geschrieben
vor 4 Minuten schrieb Enno:

Wie wäre denn dein Ansatz?

Ich hatte folgendes versucht:

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

Scheint aber nicht richtig zu sein.

Geschrieben

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.

Geschrieben
vor 4 Minuten schrieb arlegermi:

Meintest du Bewohner,Dorf?

Tippfehler, meinte ich natürlich.

vor 4 Minuten schrieb arlegermi:

Geh das ganze doch in Schritten an:

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

Geschrieben (bearbeitet)
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
Geschrieben
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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...