Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 16:39
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

Zuletzt geändert von
Daki am 12. Mai 2011, 17:17, insgesamt 2-mal geändert.
-
Benu
- Zauberer der Bergwiesen
- Beiträge: 658
- Registriert: 26. Okt 2008, 13:21
Beitrag
von Benu » 12. Mai 2011, 16:43
Beschäftige dich mit HAVING, TOP/LIMIT - ORDER BY und/oder Sub-Selects. Viel Erfolg
-
Po1son
- Zauberer der Bergwiesen
- Beiträge: 692
- Registriert: 11. Mai 2008, 14:02
Beitrag
von Po1son » 12. Mai 2011, 16:50
Code: Alles auswählen
SELECT Hersteller, MAX(lagerstand) as "Maximum"
FROM bietet_an
GROUP BY Hersteller
müsste das doch etwa tun oder?
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 16:56
@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

Zuletzt geändert von
Daki am 12. Mai 2011, 17:12, insgesamt 4-mal geändert.
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 16:58
Verschaut snigg - 248 meinte ich natürlich
EDIT: Ich habs falsch eingetragen - 246 ist doch richtig .. omg sry wie peinlich :/
Zuletzt geändert von
Daki am 12. Mai 2011, 17:12, insgesamt 1-mal geändert.
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:00
Jap
EDIT: Nein - 2 Maxima
MyMark 40
YourMark 240
... aber die falschen
Ich mache schnell nen Screenshot der bietet_an Tabelle
-
Po1son
- Zauberer der Bergwiesen
- Beiträge: 692
- Registriert: 11. Mai 2008, 14:02
Beitrag
von Po1son » 12. Mai 2011, 17:03
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?
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:05
Hier die Tabelle:

-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:06
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
Zuletzt geändert von
Daki am 12. Mai 2011, 17:11, insgesamt 1-mal geändert.
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:15
Hoffe jetzt ist es klar
Zuletzt geändert von
Daki am 12. Mai 2011, 17:34, insgesamt 1-mal geändert.
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:35
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
-
Po1son
- Zauberer der Bergwiesen
- Beiträge: 692
- Registriert: 11. Mai 2008, 14:02
Beitrag
von Po1son » 12. Mai 2011, 17:39
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
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:42
Würd gehen, aber ich darf die Tabelle leider nicht verändern bzw neue hinzufügen .. eben nur selektieren
-
Benu
- Zauberer der Bergwiesen
- Beiträge: 658
- Registriert: 26. Okt 2008, 13:21
Beitrag
von Benu » 12. Mai 2011, 17:44
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
-
Daki
- Zauberer der Bergwiesen
- Beiträge: 487
- Registriert: 16. Jun 2006, 15:11
- Wohnort: Hinter den Wasserfällen in Konlir - W6
Beitrag
von Daki » 12. Mai 2011, 17:45
@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.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 23 Gäste