T-6.5

barracuda317
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 187
Registriert: 12. Okt 2011 18:15

T-6.5

Beitrag von barracuda317 »

Hallo,

ich habe eine Frage zum Tutorium 6 Aufgabe 5 bzw. zum Geltungsbereich der Having-Klausel.

Mir ist klar, dass Ich nach:
SELECT Produktname
FROM Lager
GROUP BY ProduktName
eine Relationen von 1-Tupeln, die den Produktnamen angeben und so gruppiert sind, dass gleiche Produktnamen untereinander stehen.

Worauf bezieht sich nun dieses HAVING COUNT (DISTINCT Größe) >2 ?

Meine Idee war, dass von jeder Gruppe (also alle gleichen Produktname) die Anzahl der Größen gezählt werden. Das Distinct erscheint mir so, als würde es aussagen, dass jede Größe nur einmal vorkommen darf. Wenn ich also 2 Wanderschuhe "Hillclimber" habe mit Größe 40 aber unterschiedlichen Werten in der Spalte "Anzahl", würde hier nur 1x die Größe 40 gezählt. Das würde für mich zwar sind machen, ist aber meiner Meinung nach ziemlich unsinnig, da sich {Produktname, Größe} gut als Schlüssel eignet und daher eh ein Tupel eindeutig ist.

Eine Alternative Idee ist, dass das HAVING auf die Gesamte Relationen (also alle Produktnamen) geht. Aber das macht für mich keinen Sinn, da sich gleiche Schuhe "Hillclimber, Größe 40" und "Ballet, Größe 40" nicht auf das gleiche Produkt beziehen, und damit auch nicht zusammengezählt werden sollen.

Ich würde die Anfrage wie folgt umformen:
SELECT DISTINCT ProduktName
FROM Lager
GROUP BY ProduktName
HAVING count(Größe) > 2

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

Re: T-6.5

Beitrag von TobiasF »

Hast du mal versucht die ganzen Alternativen an einer echten Datenbank auszuprobieren?

barracuda317
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 187
Registriert: 12. Okt 2011 18:15

Re: T-6.5

Beitrag von barracuda317 »

Nein, bisher habe ich keine echte Datenbank gebaut, an der ich das Testen kann. Ich werde mir so etwas aber mal bauen als kleine Spielwiese

Antworten

Zurück zu „Archiv“