Sql Problem

Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Sql Problem

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.

Bild

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:
Bild

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.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benu
Zauberer der Bergwiesen
Beiträge: 658
Registriert: 26. Okt 2008, 13:21

Re: Sql Problem

Beitrag von Benu » 12. Mai 2011, 16:43

Beschäftige dich mit HAVING, TOP/LIMIT - ORDER BY und/oder Sub-Selects. Viel Erfolg
http://fwrails.net
lokale Styes in Google Chrome
lokale Styles in Gologle folgen...
I'm beginning to feel like a Spam God

Benutzeravatar
Po1son
Zauberer der Bergwiesen
Beiträge: 692
Registriert: 11. Mai 2008, 14:02

Re: Sql Problem

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?

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Po1son
Zauberer der Bergwiesen
Beiträge: 692
Registriert: 11. Mai 2008, 14:02

Re: Sql Problem

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?

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

Beitrag von Daki » 12. Mai 2011, 17:05

Hier die Tabelle:

Bild
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

Beitrag von Daki » 12. Mai 2011, 17:15

Bild

Hoffe jetzt ist es klar
Zuletzt geändert von Daki am 12. Mai 2011, 17:34, insgesamt 1-mal geändert.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benutzeravatar
Po1son
Zauberer der Bergwiesen
Beiträge: 692
Registriert: 11. Mai 2008, 14:02

Re: Sql Problem

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

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Benu
Zauberer der Bergwiesen
Beiträge: 658
Registriert: 26. Okt 2008, 13:21

Re: Sql Problem

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
http://fwrails.net
lokale Styes in Google Chrome
lokale Styles in Gologle folgen...
I'm beginning to feel like a Spam God

Benutzeravatar
Daki
Zauberer der Bergwiesen
Beiträge: 487
Registriert: 16. Jun 2006, 15:11
Wohnort: Hinter den Wasserfällen in Konlir - W6

Re: Sql Problem

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.
Bild in Freewar Karte umwandeln: http://daki.pytalhost.de/maptool/
Bild

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 29 Gäste