Hilfe bei SQL-Aufgabe?
Ich verstehe nicht, welcher Test fehlgeschlagen sein könnte.
Habt ihr eine Idee?
4 Antworten
Das dürfte an
AND p.name = "Besen"
AND NOT p.name = "Kinder Bueno"
liegen.
Wenn z. B. die Benutzer herausgesucht werden sollen, die sowohl "Handfeger" als auch "Kehrblech" bestellt haben, schlägt
AND p.name = "Handfeger"
AND p.name = "Kehrblech"
fehl.
D. h. es wird (vermutlich) erwartet, dass ihr je Benutzer die Liste der Bestellungen mehrfach durchgeht.
-----
Ob es didaktisch klug ist, diese "und nicht"-Bedingung vor einer "sowohl - als auch"-Bedingung zu fordern, sei dahingestellt. Die "verborgenen Tests" sind es - jedenfalls für Anfänger - keinesfalls.
Ich sehe die absteigende Sortierung nach Anzahl aus der Aufgabe nicht.
ORDER BY po.anzahl DESC, u.benutzername ASC;
Ah, Moment mal, das war nur exemplarisch, ich habe nichts gesagt.
Wird eventuell die Nutzung von Joins erwartet, anstatt einfach das Kreuzprodukt zu bilden?
In der Aufgabe steht das jeder Benutzername nur einmal im Ergebnis vorkommen darf. Da fehlt also richtigerweise noch ein GROUP BY, auch wenn das in deinem Fall keinen Unterschied machen wird, weil keiner der Benutzer mehrere gleiche Bestellungen aufgegeben hat.
Das könnte ich mir so vorstellen, oder es ist einfach verbuggt 🤣
LG Knom
nicht alle mit allen verknüpfen , das ist böses werkzeug in den meisten fällen .
erstmal schreibst du das in
SELECT
FROM tabelle1
JOIN tabelle2
ON tabelle1.FK = tabelle2.PK
JOIN ...
ON ...
JOIN ...
ON ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...
LIMIT ...
um.
oder mir dem merksatz die reihenfolge
Susi
Figgt
Willy
Ganz
Hart
Ohne
Liebe
du verknüpfst ja auch mit JOIN ON FK=PK die tabellen dann joint du die nächste tabelle und nimmst wieder den passenden FK zum PK der tabelle
nur SELECT FROM alle tabellen ist wirklich sowas von anfänger und schlecht lesbar wenn dann ein ellenlange AND im where kommt , nerft auch wenn dann Oder etc kommen .
ok, ich probiers mal, update dich gleich. Ok kanns nicht ausprobieren, die Aufgabe wurde gerade runter genommen, anscheinend müssen die etwas bearbeiten.
ich würde wenn auch AS setzen oder besser einfach die tabellen ausschreiben . wer weiss wie schlau das tool ist .
dann ist jetzt echt die frage was das mit anzahl zu sagen hat, sollst du da eine summe bilden nach der du sortierst oder ist das die feste anzahl an bestellungen schon drinne .
ich finde solche uneindeutigen aufgaben immer sinnbefreit wenn man keine beispiel daten hat und dann dort sows steht wie , man sieht das doch aus der lösung , lol , ja ne sieht man nicht .
praktisch
brauchst du ja nur bis zur tabelle mit anzahl alle joinen , den danach ist eh uninterressant .
Anzahl ist, die Anzahl der bestellten Produkte. Ja das mit ohne Beispiel Daten ist echt blöd.
ja das ist klar , aber dann heist das das das schon eine ausgewerte tabelle ist wo halt fest die anzahl drinne steht .
ja dann brauchst du die produkte tabelle ja gar nicht mehr .
wäre nur die frage, ob da jetzt die summe von allen produkten rein soll die ein benutzer bestellt hat . sann würde ich nämlich SUM(Bestellungen.Anzahl) AS Anzahl und dann Order BY Anzahl
Ja, die wollen uns halt einfach ein Beispiel geben, aber die scheinen gerade so oder so technische Probleme mit der ganzen Übung zu haben, weil sie sie offline genommen haben und meinen dass sie die Testumgebung überarbeiten müssen. Danke trotzdem für die Hilfe :)
habs nochmal ergäntzt . wie gesagt, ich hasse dozenten und lehrer dioe prüfungsarbeiten schreiben aber nie mit einer Datenbank gearbeitet haben . ich fetzt mich immer mit meinen kollegen , weil sie durch ihren dunning kruger effekt sich auch noch für schlau halten .
Ich glaube nicht dass die Aufgabe vom Dozenten selber kommt ^^. Das machen bestimmt die Wissenschaftlichen Mitarbeiter die für Ihn arbeiten.
Aber ich muss doch alle mit allen verknüpfen, weil wie komme ich sonst von der Tabelle Benutzer zur Tabelle Produkt?
Also wie kann ich die zwei Tabellen sonst verknüpfen?