Gelöst Datenbankabfrage Überverkäufe

xadoX

Sehr aktives Mitglied
11. September 2012
659
65
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
8.449
2.573
Berlin
Firma
css-umsetzung
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
659
65
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
8.449
2.573
Berlin
Firma
css-umsetzung
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
659
65
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.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.449
2.573
Berlin
Firma
css-umsetzung
Ich dachte das wäre jetzt erledigt?

Mit der Abfrage kannst du doch alle finden oder hab ich da jetzt was falsch verstanden?
 

xadoX

Sehr aktives Mitglied
11. September 2012
659
65
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
8.449
2.573
Berlin
Firma
css-umsetzung
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
8.449
2.573
Berlin
Firma
css-umsetzung
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)