SQL-Abfrage

Neue Frage »

Auf diesen Beitrag antworten »
kruemel SQL-Abfrage

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
 
Auf diesen Beitrag antworten »
kiste

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
Auf diesen Beitrag antworten »
kruemel

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??
Auf diesen Beitrag antworten »
kiste

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
 
Auf diesen Beitrag antworten »
kruemel

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
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »