5 Produkte mit höchstem Preis finden
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Selbsttest SQL
Die Lösung des Tests sagt, dass so die 5 größten Räume ausgegeben werden:
Raum(RaumNr, Grundfläche, Raumverantwortlicher)
SELECT r1.RaumNr, COUNT() as Rang
FROM Raum r1, Raum r2
WHERE r1.Grundfläche < = r2.Grundfläche
GROUP BY r1.RaumNr
HAVING COUNT() <= 5
der Versuch das ganze mit der Übungsdatenbank ausgeben zu lassen:
SELECT r1.artikelnummer, COUNT() as Rang
FROM produkt r1, produkt r2
WHERE r1.preis <= r2.preis
GROUP BY r1.artikelnummer
HAVING COUNT() <= 5
Ich bekomme jedoch gar keine lösung in der Datenbank angezeigt. Kann mir jemand sagen wo mein Fehler diesbezüglihc ist ?
Dein “Fehler” ist, dass es 15 Produkte gibt, die am teuersten (599.99) sind.
D.h. das “HAVING COUNT(*) <= 5” trifft nie zu.
Schau Dir die Einträge in “Produkt” einfach mal per
SELECT Preis, COUNT(*) AS anz FROM Produkt
GROUP BY preis
ORDER BY Preis DESC;
an.
Gruß
ich hätte eine Frage , wegen die Anfrage .
ich verstehe nicht , warum in der WHERE-klausel eine <= angegeben wird ? …
kann jemand mir das kurz erklären , weil ich gedacht habe , da wir in GROUP BY nach r1 gruppieren , dann muss die Fläche von r1 auch größer als das andere sein …
wie geht das genau ? …
vielen Dank im Voraus
Anmerkung: Daher sollte auch logisch sein, dass dieses Vorgehen bei einigen Einträgen mit den gleichen Werten für die entscheidenden Attribute eher ungeeignet ist. Aber das hat info2015 ja schon festgestellt