Gelöst Datenbankabfrage Überverkäufe

xadoX

Sehr aktives Mitglied
11. September 2012
596
46
Hallo,

wir bräuchten eine Datenbankabfrage, die uns alle Vaterartikel anzeigt bei denen Überverkäufe möglich auf JA steht UND wo bei all seinen Kindartikeln Überverkäufe möglich auf NEIN steht.

Hat das vielleicht schon mal jemand umgesetzt?

Freue mich über jede Antwort.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.681
1.608
Berlin
probier mal
Code:
SELECT c.* FROM dbo.tArtikel AS a
    left join dbo.tArtikel AS c on c.kVaterArtikel=a.kArtikel
    WHERE a.nIstVater=1
        AND a.cLagerKleinerNull='Y'
        AND (SELECT count(kArtikel) FROM dbo.tArtikel AS b WHERE b.kVaterArtikel = a.kArtikel AND b.cLagerKleinerNull='N') > 0
 

xadoX

Sehr aktives Mitglied
11. September 2012
596
46
Hallo @css-umsetzung,

vielen Dank für deine Nachricht.

Mit dem SQL werden mir jetzt recht viele Kindartikel angezeigt. Ich bräuchte aber eine Liste nur mit den Vaterartikelnummern, wo der Haken Überverkäufe möglich gesetzt ist und wo alle Kinder den Haken nicht gesetzt haben.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.681
1.608
Berlin
Dann nimm das aber der schaut nicht ob ALLE auf N gesetzt sind sondern reagiert schon wenn nur einer der Kinder ein N hat, das sollte aber ja egal sein oder?

Code:
SELECT a.* FROM dbo.tArtikel AS a
    WHERE a.nIstVater=1
        AND a.cLagerKleinerNull='Y'
        AND (SELECT count(kArtikel) FROM dbo.tArtikel AS b WHERE b.kVaterArtikel = a.kArtikel AND b.cLagerKleinerNull='N') > 0
 

xadoX

Sehr aktives Mitglied
11. September 2012
596
46
Sobald ein Kind Überverkäufe auf Y hat, dann muss auch der Vater auf Y sein. Erst wenn alle Kinder auf N stehen, dann muss der Haken auch beim Vater weg.
 

xadoX

Sehr aktives Mitglied
11. September 2012
596
46
Leider nein.

Es sollen nur Väter angezeigt werden, wo Überverkäufe auf JA steht und wo bei all seinen Kindern Überverkäufe auf NEIN steht.

Mit deinem letzten SQL zeigt er zwar Väter an, wo einige Kinder Überverkäufe auf Nein haben, aber er zeigt auch Väter an, wo einige Kinder Überverkäufe auf Nein, manche aber auch auf JA stehen haben. In diesem Fall muss beim Vater ja auch so lange Überverkäufe drin bleiben, bis wirklich alle Kinder Überverkäufe raus haben.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.681
1.608
Berlin
Ok, ich dachte nicht das zwingend alle gemeint sind.
Dann wird da noch eine Abfrage der gesamten Menge der Kinder gebraucht um das zu vergleichen.

Ich passe das morgen an.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.681
1.608
Berlin
Eventuell nicht die performanteste Lösung aber sie ist ja nur zum prüfen da.

Code:
SELECT a.* FROM dbo.tArtikel AS a
    WHERE a.nIstVater=1
        AND a.cLagerKleinerNull='Y'
        AND (SELECT count(b.kArtikel) FROM dbo.tArtikel AS b WHERE b.kVaterArtikel = a.kArtikel AND b.cLagerKleinerNull='N') = (SELECT count(c.kArtikel) FROM dbo.tArtikel AS c WHERE c.kVaterArtikel = a.kArtikel)
 

Ähnliche Themen