Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

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

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.