ich habe drei Tabellen, die ich hier vereinfacht darstelle:
Code: Alles auswählen
bestrechnungen-Tabelle (Bestellungen/Rechnungen)
Recnr - integer(id)
Tagtrnr - integer
bestelllungen-TAbelle (Bestellte Produkte)
Besnr - integer(id)
Recnr - Verknüpfung mit bestrechnungen
Prodnr - Integer(Produktnr)
prodeiglink-Tabelle (Produkteigenschaften, Ein Produkt kann mehrere Eigeschaften haben)
Pvnr - integer (id)
Pvpenr - integer (auswahl)
Pvprodnr- Integer(Produktnr)
Es gibt noch ein Produkttabelle und einige andere aber das brauchen wir hier nicht.
Aus dieser Db Selektiere ich Anzahl alle bestellten Produkte mit dem SQL-Befehl:
(Bedingung: Tagtrnr=58110
Code: Alles auswählen
SELECT bt.Prodnr, sum(bt.Menge) AS Menge FROM bestrechnungen br, bestelllungen bt
WHERE (br.Tagtrnr=58110) AND (bt.Recnr=br.Recnr)
GROUP BY bt.Prodnr
Das funktioniert wunderbar.
Aber jetzt wenn ich Bestellungen mit Tagtrnr=58110 und Pvpenr<>131 (Produkteigenschaft) auswähle mit:
Code: Alles auswählen
SELECT bt.Prodnr, sum(bt.Menge) AS Menge FROM bestrechnungen br, bestelllungen bt, prodeiglink pl
WHERE (br.Tagtrnr=58110) AND (bt.Recnr=br.Recnr)
AND (pl.Pvpenr<>131) AND (pl.Pvprodnr=bt.Prodnr)
GROUP BY bt.Prodnr
Dann werden einige Produkte mehrfach gezahlt, weil Produkte gleichzeitig viele verschiedene Eigenschaften haben können. "Select distinct ..." funktioniert, wegen der Funktion sum nicht. Ohne Sum funktioniert es.
Edit:
Nehmen wir an ein Produkt hat die Eigenschaft 1 und 2. Das soll dann einmal gezählt werden. Produkte mit der Eigenschaft 131 werden übersprungen.
Also ich suche einen SQL-Befehl mit dem ich Produkte zählen soll die nicht die Eigenschaft 131 hat (pl.Pvpenr<>131). Kennt jemand Lösung für das Problem?