Hallo und Willkommen,
ich habe eine Abfrage, bei der ich schon seit langer Zeit hänge.
Ich habe 3 Tabellen mit den Namen "waren", "rechnungen" und "srechnungen".
Die Tabellen sind wie folgt aufgebaut:
waren
rechnungen
srechnungen
In der Tabelle "waren" stehen Produkte mit einer id und einem einmaligen Schlüssel. Wenn diese verkauft werden wird in die Tabelle "rechnungen" ein neuer Eintrag erstellt, der als waren_id die id der Ware erhält.
Wird die Rechnung storniert, kommt in die Tabelle "srechnungen" ein Eintrag mit der id der entsprechenden Rechnung aus der Tabelle "rechnungen".
Zu erwähnen ist noch, dass ein verkaufter Artikel nach erfolgter Stornierung erneut verkauft werden und wieder storniert werden kann und das unbegrenzt oft.
Mein Ziel ist es jetzt, dass wenn ich nach einem Warenschlüssel suche, mir alle Rechungen zu der Ware und zusätzlich alle Stornorechnungen, sowie die Anzahl der Rechnungen und Stornorechnungen angezeigt werden.
Mein bisheriger Ansatz zur Bestimmung der Anzahl der Rechnungen und Stornorechnungen zu einem Artikel lautet:
Der Code liefert auch fast das richtige Ergebnis. Angezeigt bekomme ich so etwas:
Allerdings existieren zu dem Artiel 2 Stornorechnungen und er sollte mir [anzahlstornorechnungen] = 2 anzeigen. Auch ein GROUP BY wid ändert an der Sache nichts. So verschwindet nur ein Array-Element und das übriggebliebende behält weiterhin [anzahlstornorechnungen] = 1.
Bin über jede Hilfe dankbar
Viele Grüße,
Michael
ich habe eine Abfrage, bei der ich schon seit langer Zeit hänge.
Ich habe 3 Tabellen mit den Namen "waren", "rechnungen" und "srechnungen".
Die Tabellen sind wie folgt aufgebaut:
waren
Code:
| id | schluessel |
Code:
| id | waren_id |
Code:
| id | rechnungen_id |
Wird die Rechnung storniert, kommt in die Tabelle "srechnungen" ein Eintrag mit der id der entsprechenden Rechnung aus der Tabelle "rechnungen".
Zu erwähnen ist noch, dass ein verkaufter Artikel nach erfolgter Stornierung erneut verkauft werden und wieder storniert werden kann und das unbegrenzt oft.
Mein Ziel ist es jetzt, dass wenn ich nach einem Warenschlüssel suche, mir alle Rechungen zu der Ware und zusätzlich alle Stornorechnungen, sowie die Anzahl der Rechnungen und Stornorechnungen angezeigt werden.
Mein bisheriger Ansatz zur Bestimmung der Anzahl der Rechnungen und Stornorechnungen zu einem Artikel lautet:
Code:
SELECT
wid
(SELECT COUNT(rechnungen.id) FROM rechnungen WHERE waren_id = w.wid) anzahlrechnungen
(SELECT COUNT(stornorechnungen.id) FROM srechnungen WHERE rechnungs_id = rechnungen.id
FROM
(SELECT
id AS wid
FROM
waren
WHERE
schluessel = 69
)
AS w
LEFT JOIN rechnungen ON (w.wid = rechnungen.waren_id)
Der Code liefert auch fast das richtige Ergebnis. Angezeigt bekomme ich so etwas:
Code:
Array
(
[wid] => 8
[schluessel] = 69
[anzahlrechnungen] => 2
[anzahlstornorechnungen] => 1
)
Array
(
[wid] => 8
[schluessel] = 69
[anzahlrechnungen] => 2
[anzahlstornorechnungen] => 1
)
Bin über jede Hilfe dankbar
Viele Grüße,
Michael