SQL-Abfrage |
kruemel
Grünschnabel
Dabei seit: 03.12.2008
Beiträge: 3
|
|
Hallo,
ich habe ein Problem mit einer SQL-Abfrage...eigentlich nicht mit der Abfrage ansich, sondern eher mit den begriffen "ALL" und "ANY", vielleicht kann mir ja jemand helfen!
Bei "ALL" müssen ja alles "true" ergeben und bei "ANY" muss nur eins "true" sein, damit alle gelten (soweit zu meinem verständnis und unseren Folien!!)
Die Aufgabe lautet, dass mna die Abfrage so umschreibt, dass die Schachtelung aufgehoben wird!!
Ausgangsabfrage (in der Klammer ist jetzt die zweite ausgangsabfrage!!!)
SELECT *
FROM Person
WHERE p.Alter > ALL(ANY)
(SELECT Alter
FROM Pferd
WHERE Rasse=’Araber’);
Lösung für ALL müsste dann ja so sein oder??
SELECT *
FROM Person, Pferd
WHERE Person.Alter > Pferd.Alter
AND Pferd.Rasse = 'Araber';
Aber wie muss das ganze dann für ANY aussehen???
Wenn jemand helfen kann wäre das echt super...
Danke im voraus
kruemel
|
|
06.01.2009 15:11 |
|
|
kiste
Mitglied
Dabei seit: 06.05.2007
Beiträge: 29
|
|
Hallo,
das passt so nicht wie du es gemacht hast.
Du hast alle Tupel ausgewählt so dass das Alter der Person älter ist als der des Pferdes das ein Araber ist. In der Ausgangsabfrage ist jedoch nur die Information von der Person. Die Abfrage eignet sich jedoch gut als Grundlage für ANY.
Benutze distinct in der Abfrage um nur einmal die Person zu bekommen!
Für ALL benutze die Funktion MAX zusammen mit einer Gruppierung und HAVING
|
|
08.01.2009 13:36 |
|
|
kruemel
Grünschnabel
Dabei seit: 03.12.2008
Beiträge: 3
|
|
Hey,
Danke erstmal für die Hinweise...werd mal schauen, was da letztendlich bei rauskommt (setz mich am WE nochmal daran)
muss denn für das ANY viel geändert werden oder einfach nur des Distinct eingesetzt???
und Gruppierung meinst du sicherlich GROUP BY oder??
|
|
08.01.2009 14:43 |
|
|
kiste
Mitglied
Dabei seit: 06.05.2007
Beiträge: 29
|
|
Bei ANY werden auch noch die Daten des Pferdes ausgegeben, da solltest du eben nur die der Person ausgeben.
Ja mit Gruppierung meinte ich Group By
|
|
08.01.2009 22:05 |
|
|
kruemel
Grünschnabel
Dabei seit: 03.12.2008
Beiträge: 3
|
|
Also für ANY hab ich in der zwischenzeit das
SELECT DISTINCT Person.*
FROM Person, Pferd
WHERE Person.Alter>Pferd.Alter
AND Pferd.Rasse='Araber';
Aber bei ALL häng ich wirklich in den Seilen, komm da auf keine richtige Lösung
Aber dennoch danke für die anregung
|
|
13.01.2009 16:21 |
|
|
|