Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » SQL-Abfrage » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen SQL-Abfrage
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
kruemel
Grünschnabel


Dabei seit: 03.12.2008
Beiträge: 3

SQL-Abfrage Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 kruemel ist offline E-Mail an kruemel senden Beiträge von kruemel suchen Nehmen Sie kruemel in Ihre Freundesliste auf
kiste
Mitglied


Dabei seit: 06.05.2007
Beiträge: 29

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 kiste ist offline E-Mail an kiste senden Beiträge von kiste suchen Nehmen Sie kiste in Ihre Freundesliste auf
kruemel
Grünschnabel


Dabei seit: 03.12.2008
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 kruemel ist offline E-Mail an kruemel senden Beiträge von kruemel suchen Nehmen Sie kruemel in Ihre Freundesliste auf
kiste
Mitglied


Dabei seit: 06.05.2007
Beiträge: 29

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 kiste ist offline E-Mail an kiste senden Beiträge von kiste suchen Nehmen Sie kiste in Ihre Freundesliste auf
kruemel
Grünschnabel


Dabei seit: 03.12.2008
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 kruemel ist offline E-Mail an kruemel senden Beiträge von kruemel suchen Nehmen Sie kruemel in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » SQL-Abfrage