Nina123456
Neuer Benutzer
- Beiträge
- 3
Hallo
In meiner Datenbank geht es um Schiffe und Schleusungen m:n. Ich muss mit einem SQL Editor folgende Abfrage für die angelegte Datenbank formulieren:
Listen Sie alle Schiffe mit Name und Art auf und ermitteln Sie jeweils die Anzahl an verschiedenen Schleusen, die sie bisher durchfahren haben ( als Ergebnisspalte "AnzahlSchleusungen"). Verwenden Sie die GROUP BY Funktion, um die Ergebnisse bezogen auf das Schiff ( Name ) auszugeben. Bei Schiffen, die noch keine Schleuse durchfahren haben, soll die Anzahl an durchfahrenen Schleusen mit einer Null versehen werden ( UNION Operator).
Nicht besonders schwer, wenn denn der letzte Satz nicht wäre...habe jetzt schon so viel über diesen UNION Operator gelesen aber es wird leider nichts...
hier ist mein Vorschlag, der jedoch nicht funktioniert
zuerst die Tabellen mit den entsprechenden Attributen
Schiff
schf_id
schf_name
schf_art
Schleuse
schl_id
schl_name
durchfaehrt
df_id
df_schf_id
df_schl_id
SELECT schf_name, schf_art, COUNT( schl_id ) AS AnzahlSchleusen
FROM Schiff, Schleuse, durchfaehrt
WHERE ( schf_id LIKE df_schf_id AND df_schl_id LIKE schl_id)
HAVING AnzahlSchleusen IS NOT NULL
UNION
SELECT schf_name, schf_art, COUNT( schl_id ) AS AnzahlSchleusen
FROM Schiff, Schleuse, durchfaehrt
WHERE ( schf_id LIKE df_schf_id AND df_schl_id LIKE schl_id )
HAVING AnzahlSchleusen IS NULL
GROUP BY schf_name, schf_art;
wenn ich die Zeilen ab UNION weglasse, dann gibt er mir nur die Schiffe mit vorhandenen Schleusenvorgängen an, jedoch nicht die Schiffe, die noch nicht durch Schleusen gefahren sind....füge ich diese aber ein, dann funktioniert es nicht mehr
Ich meine auch gelesen zu haben, dass die count funktion die Ergebnisse mit 0 nicht anzeigt
Vielen Dank schonmal
)))
lg Nina
In meiner Datenbank geht es um Schiffe und Schleusungen m:n. Ich muss mit einem SQL Editor folgende Abfrage für die angelegte Datenbank formulieren:
Listen Sie alle Schiffe mit Name und Art auf und ermitteln Sie jeweils die Anzahl an verschiedenen Schleusen, die sie bisher durchfahren haben ( als Ergebnisspalte "AnzahlSchleusungen"). Verwenden Sie die GROUP BY Funktion, um die Ergebnisse bezogen auf das Schiff ( Name ) auszugeben. Bei Schiffen, die noch keine Schleuse durchfahren haben, soll die Anzahl an durchfahrenen Schleusen mit einer Null versehen werden ( UNION Operator).
Nicht besonders schwer, wenn denn der letzte Satz nicht wäre...habe jetzt schon so viel über diesen UNION Operator gelesen aber es wird leider nichts...
hier ist mein Vorschlag, der jedoch nicht funktioniert
zuerst die Tabellen mit den entsprechenden Attributen
Schiff
schf_id
schf_name
schf_art
Schleuse
schl_id
schl_name
durchfaehrt
df_id
df_schf_id
df_schl_id
SELECT schf_name, schf_art, COUNT( schl_id ) AS AnzahlSchleusen
FROM Schiff, Schleuse, durchfaehrt
WHERE ( schf_id LIKE df_schf_id AND df_schl_id LIKE schl_id)
HAVING AnzahlSchleusen IS NOT NULL
UNION
SELECT schf_name, schf_art, COUNT( schl_id ) AS AnzahlSchleusen
FROM Schiff, Schleuse, durchfaehrt
WHERE ( schf_id LIKE df_schf_id AND df_schl_id LIKE schl_id )
HAVING AnzahlSchleusen IS NULL
GROUP BY schf_name, schf_art;
wenn ich die Zeilen ab UNION weglasse, dann gibt er mir nur die Schiffe mit vorhandenen Schleusenvorgängen an, jedoch nicht die Schiffe, die noch nicht durch Schleusen gefahren sind....füge ich diese aber ein, dann funktioniert es nicht mehr
Ich meine auch gelesen zu haben, dass die count funktion die Ergebnisse mit 0 nicht anzeigt
Vielen Dank schonmal
lg Nina