Übung 6 Aufgabe 2

Benutzeravatar
Domac
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 160
Registriert: 4. Okt 2010 16:11

Übung 6 Aufgabe 2

Beitrag von Domac »

Hallo.

Ich habe mal eine Frage zu dieser Aufgabe, da ich diese mit

Code: Alles auswählen

SELECT Titel, MAX(Preis) FROM Buch;
beantwortet habe und die MuLö aber

Code: Alles auswählen

SELECT Title,Preis FROM Buch WHERE Preis = (SELECT MAX(Preis) FROM Buch);
vorschlägt. Darf man Normale "columns" mit Aggregatfunktionen mixen (so wie in meiner Lösung) oder muss man es so wie in der MuLö machen?
Ich will da nur nochmal auf Nummer sicher gehen, weil ja keine Gewähr bei dem Validator besteht (und für Tutorials und Foren wahrscheinlich auch nicht). :-)

Danke!
Extend my dropbox space (here).
Thanks!

Stao
Mausschubser
Mausschubser
Beiträge: 60
Registriert: 12. Feb 2008 20:54

Re: Übung 6 Aufgabe 2

Beitrag von Stao »

Ohne "group by" funktioniert das generell nicht soweit ich weiß. D.h. in einem normalen SQL Statement würdest du etwas sowas machen: select eins , MAX(zwei) from zahlen group by eins.
Ohne group by würde das sql statement glaube ich alle Buch titel zurückgeben aber nur einen einzigen (den maximalen) Preis Wert:

Titel1 - 5000
Titel2 - 5000
Titel3 - 5000

Weil die Anzahl von eins und max(zwei) unterschiedlich ist bekommst du einen Fehler.

ich hab die aufgabe die du meinst jetzt nicht mehr im kopf aber von meinem gefühl her würde ich jetzt sagen, dass
SELECT Titel, MAX(Preis) FROM Buch group by Titel richtig sein müsste.

TobiasF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 203
Registriert: 18. Apr 2011 11:57

Re: Übung 6 Aufgabe 2

Beitrag von TobiasF »

Stao hat ganz recht, man darf Aggregate (aus Aggregationsfunktionen) zusammen mit normalen Attributen nur verwenden, wenn nach den Attributen gruppiert wird.

Ich nehme an, dass du dich auf die h) beziehst, Aufgabe 2 hat nämlich so einige Teilaufgaben...
Hier ist nach dem Titel und Preis des teuersten Buchs gefragt. Also nur eins.

Code: Alles auswählen

SELECT Titel, MAX(PREIS) FROM Buch
Ergibt den Maximalpreis für jeden Titel, also vermutlich annähernd so viele Tupel, wie in Buch vorhanden sind. Ich fürchte also, dass deine Lösung hier nicht ganz korrekt ist.

SirtobeD
Mausschubser
Mausschubser
Beiträge: 68
Registriert: 28. Okt 2010 18:56

Re: Übung 6 Aufgabe 2

Beitrag von SirtobeD »

Könnte man bei der 2 q) auch folgendes schreiben?

Code: Alles auswählen

SELECT l.id, COUNT(e.ISBN) AS Anzahl FROM Leser l, Exemplar e WHERE l.ID=e.Leser AND Anzahl>=2 GROUP BY(l.ID)

TobiasF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 203
Registriert: 18. Apr 2011 11:57

Re: Übung 6 Aufgabe 2

Beitrag von TobiasF »

Kann ich jetzt so einfach nicht sagen.

Genrell kann man Fragen der Art "kann man bei ... auch ... schreiben?" sehr gut mit einer kleinen Datenbank ausprobieren....

Antworten

Zurück zu „Archiv“