Seite 1 von 2
Sql Problem
Verfasst: 12. Mai 2011, 16:39
von Daki
Hey!
Ich habe mein Problem soweit vereinfacht wies geht - die Frage ist eben, ob ich das Maxima verschiedener Gruppen bestimmen kann.
Ziel ist es das Maximum der beiden Herstellergruppen zu bekommen, also
MyMark 48
YourMark 246
Bez ist dabei die Bezeichnung der Artikel - zB T-Shirt, CD, DVD
Die Tabelle:
Es sollen auch keine Konstanten verwendet werden ... das wird nicht akzeptiert :/
Hoffe jemand kann mir weiterhelfen ... bin mittlerweile schon 1h an dem Problem dran

Re: Sql Problem
Verfasst: 12. Mai 2011, 16:43
von Benu
Beschäftige dich mit HAVING, TOP/LIMIT - ORDER BY und/oder Sub-Selects. Viel Erfolg
Re: Sql Problem
Verfasst: 12. Mai 2011, 16:50
von Po1son
Code: Alles auswählen
SELECT Hersteller, MAX(lagerstand) as "Maximum"
FROM bietet_an
GROUP BY Hersteller
müsste das doch etwa tun oder?
Re: Sql Problem
Verfasst: 12. Mai 2011, 16:56
von Daki
@Benu: Ich bin durchaus vertraut mit having, order by und Unteranfragen - wenn du die Lösung/Lösungsvorschlag nicht weißt, dann bitte ich dich, nichts zu posten. Hier ist die ganze Abfrage:
Code: Alles auswählen
select merchandiseartikel.hersteller, merchandiseartikel.bez, preis
from merchandiseartikel
join bietet_an on merchandiseartikel.hersteller = bietet_an.hersteller
and merchandiseartikel.bez = bietet_an.bez
group by merchandiseartikel.hersteller, merchandiseartikel.bez, preis, bietet_an.bez
having sum(lagerstand) = any(select sum(lagerstand) from bietet_an group by hersteller, bez)
@Po1son: Da bekommt man leider nur 246 raus - also ein Maximum.
@=snigg=: Ich kenne die Max Funktion, aber danke für den Tipp

Re: Sql Problem
Verfasst: 12. Mai 2011, 16:58
von Daki
Verschaut snigg - 248 meinte ich natürlich
EDIT: Ich habs falsch eingetragen - 246 ist doch richtig .. omg sry wie peinlich :/
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:00
von Daki
Jap
EDIT: Nein - 2 Maxima
MyMark 40
YourMark 240
... aber die falschen
Ich mache schnell nen Screenshot der bietet_an Tabelle
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:03
von Po1son
SELECT Hersteller, MAX(lagerstand) as "Maximum" FROM bietet_an GROUP BY Hersteller;
Code: Alles auswählen
HERSTELLER LAGERSTAND
-------------------- ----------
MyMark 45
MyMark 100
MyMark 58
yourmark 58
yourmark 158
Code: Alles auswählen
HERSTELLER Maximum
-------------------- ----------
yourmark 158
MyMark 100
past ja oder?
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:05
von Daki
Hier die Tabelle:

Re: Sql Problem
Verfasst: 12. Mai 2011, 17:06
von Daki
Das Problem ist, man muss die Lagerstände der bez zusammenzählen - deswegen in meiner Query: group by hersteller, bez
EDIT: @Poison: SELECT Hersteller, MAX(lagerstand) as "Maximum" FROM bietet_an GROUP BY Hersteller;
vernachlässig dabei die bez und sucht sich das Maximum der einzelnen Hersteller, ohne die Lagerbestände zu summieren
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:15
von Daki
Hoffe jetzt ist es klar
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:35
von Daki
Folgende Query liefert nur 246:
select max(sum(lagerstand)) from bietet_an group by hersteller, bez
Danke für den Link - werd ihn mal studieren
Und was für eine Bez im Endeffekt herauskommt (T-Shirt, etc) ist egal - hauptsache der Lagerbestand muss Max sein
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:39
von Po1son
CREATE VIEW herst AS select hersteller as herst, Bez as be, sum(a1.lagerstand) as la From bietet_an a1 Group By Bez, Hersteller;
select herst, Max(la) as "maximum" From herst Group by herst;
Eingabe:
Code: Alles auswählen
HERSTELLER BEZ LAGERSTAND
-------------------- -------------------- ----------
MyMark CD 50
MyMark CD 100
MyMark CD 58
MyMark Shirt 58
MyMark Shirt 120
MyMark Shirt 150
yourmark Marco 58
yourmark Marco 158
yourmark Polo 158
yourmark Polo 250
View
Code: Alles auswählen
HERST BE maximum
-------------------- -------------------- ----------
yourmark Polo 408
MyMark CD 208
yourmark Marco 216
MyMark Shirt 328
liefert
Code: Alles auswählen
HERST maximum
-------------------- ----------
yourmark 408
MyMark 328
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:42
von Daki
Würd gehen, aber ich darf die Tabelle leider nicht verändern bzw neue hinzufügen .. eben nur selektieren
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:44
von Benu
Daki hat geschrieben:@Benu: Ich bin durchaus vertraut mit having, order by und Unteranfragen - wenn du die Lösung/Lösungsvorschlag nicht weißt, dann bitte ich dich, nichts zu posten.[...]
Lösungsvorschläge hab ich gepostet. Du gehst bloß viel zu oberflächlich an das ganze, was man allein an dem Umstand merkt, dass du in einem Game-Forum fragst. Aber hier mal die naive 5-Minuten-Lösung:
SELECT hersteller, MAX(lagerstand_sum) FROM (SELECT hersteller, SUM(lagerstand) AS lagerstand_sum FROM bietet_an a GROUP BY hersteller, bez) AS subquery GROUP BY hersteller
Re: Sql Problem
Verfasst: 12. Mai 2011, 17:45
von Daki
@snigg: Die greatest Funktion ist zwar nice, aber ich müsste dazu einmal das Maximum von MyMark und einmal das Maximum von YourMark bestimmen - das ist jedoch nicht erlaubt, da ich diese Maxima nur bekommen würde, wenn ich Konstanten in die Query einfüge.