PDA

View Full Version : Mal wieder SQL



mk
08-07-15, 13:06
Hallo zusammen,
ich benötige einen Denkanstoß von den Profis :-)

Ich habe eine Header- und Detailtabelle.
Folgender Aufbau

Beispieldaten
HeaderDaten
id Shop AktivVon AktivBis
1 123 01.01.2015 30.06.2015
2 123 01.07.2015 31.12.2020
3 555 01.01.2015 30.06.2015
4 555 01.07.2015 30.06.2015


Detaildaten

id lager
1 500
1 600
1 700
2 500
2 650
2 700


3 250
3 350
3 400
3 500
4 150
4 350
4 600
4 700

Für die GUI Darstellung ( als Tree Ansicht ) benötige ich folgenden Aufbau:


Shop AktivVon AktivBis lager TreeKennung
123 01.01.2015 30.06.2015 500 1
123 01.01.2015 30.06.2015 600 0
123 01.01.2015 30.06.2015 700 0
123 01.07.2015 31.12.2020 500 1
123 01.07.2015 31.12.2020 650 0
123 01.07.2015 31.12.2020 700 0

555 01.01.2015 30.06.2015 250 1
555 01.01.2015 30.06.2015 350 0
555 01.01.2015 30.06.2015 400 0
555 01.01.2015 30.06.2015 500 0

Dabei soll die 1 die erste Gruppe anzeigen und die folgenden 0
die Details der Gruppe.
Bei der nächsten 1 fängt dann die neue Gruppe an.

Kann man das mit SQL realisieren ?
Gruß
Michaeel

Pikachu
08-07-15, 14:23
Nimm alle (als Nummer 0) und dann noch die jeweils ersten (als Nummer 1) mit dazu und aus dieser Menge nur die mit der größten Nummer je Gruppe:

SELECT shop,von,bis,lager,MAX(gruppe) gruppe FROM (
SELECT shop,von,bis,lager, 0 gruppe FROM ... WHERE ... UNION
SELECT shop,von,bis,MIN(lager) lager, 1 gruppe FROM ... WHERE ...
GROUP BY shop,von,bis) X
GROUP BY shop,von,bis,lager
ORDER BY shop,von,bis,lager,gruppe desc

mk
09-07-15, 11:31
Hallo,

ein Dankeschön für den Denkanstoß.
Habe alles in einen View untergebracht und funktioniert

Gruß
Michael