SQL-Abfrage -Anfänger-

Skitt

Neuer Benutzer
Beiträge
1
Hallo,
ich bin grade dabei SQL zu lernen und bräuchte bei folgender Frage hilfe.
Folgendes relationale schema ist gegeben:

Tier(name, art->Tierart, geschlecht, alter)
Tierart(bezeichnung, gruppe, status, lebensraum)
Land(bezeichnung, kontinent)
Verbreitung(art->Tierart, land->Land)

und den Satz:
Bestimmen Sie die Bezeichnung und die Gruppe derjenigen Tierarten, die in dem
Land verbreitet sind, in dem die meisten verschiedenen Tierarten verbreitet sind.

mein bisheriger Gedanke ist:
SELECT t.bezeichnung, t.gruppe
FROM tierart t
JOIN verbreitung v ON t.art=v.art
WHERE v.land=max(count(v.land))

Allerdings bin ich mir sicher, dass meine Abfrage nicht wirklich richtig ist. Ein anderer Ansatz fällt mir momentan auch nicht ein.
Wäre für jede Hilfe dankbar.

LG
Skitt
 
Werbung:
Werbung:
Die Abfrage ist in der Tat nicht korrekt.

Sytnax-Fehler:
- Du verwendest ein Aggregat (max() und count()), es gibt aber kein GROUP BY. Damit das funktioniert müssen alle Spalten im SELECT-Teil entweder aggregiert oder gruppiert werden. Daher fehlt dir GROUP BY.
- Im WHERE-Teil kann nicht auf ein Aggregat als Bedingung zurück gegriffen werden, dafür gibt es aber HAVING.

Logik-Fehler:
- In deinem Fall brauchst du aber wohl eher kein HAVING sondern einen Subselect im WHERE-Teil.

Unschön:
- Dein Join ist nicht explizit, besser wäre INNER JOIN.
- Deine Spaltenbezeichnungen sind nicht ganz selbst erklärend. Die Spalte "bezeichnung" in Tierart, ist das nicht die "Gruppe"? Wo ist der Unterschied und warum gibt es keine Tabelle "Tiergruppen" sondern das steht (redundant) in der Tierart Tabelle?
 
Zurück
Oben