Hallöchen,
habe mal wieder ein Problem mit einer Abfrage und viellicht könnt ihr mir helfen.
Szenario:
Ich habe eine Tabelle Produkte, die zwischen 2004 und 2009 gekauft worden sind.
Aufbau:
pid | name | ustlgid (Umsatzsteuerleistungsgruppe) | ...
1 | Holz | 2
2 | Staub | 2
Produkte werden bei mir eingekauft und in der Tabelle Einkauf gespeichert
Aufbau:
eid | pid | datum
1 | 1 | 2005-09-09
2 | 2 | 2009-09-09
Wenn die Güter verbraucht werden, habe ich eine Übersicht mit jeweiligen Bruttopreisen. Bis dato hatte ich immer eine PHP Funktion Ust() um mir die entsprechende Umsatzsteuer 7%, 16% oder 19% zu beschaffen. Diese ist jedoch ziehmlich unkomfortabel und langsam. Aus diesen Grund habe ich bereits eine Reihe mit reinen SQL Query's gelöst und was Performance angeht eine erhebliche Steigerung verzeichnen können. Nur jetzt hab ich meine Probleme mit der Umsatzsteuer. Ich habe eine Tabelle Umsatzsteuer.
Aufbau:
ustid | ustlgid | satz | datum
1 | 1 | 0.07 | 0000-00-00
2 | 2 | 0.16 | 0000-00-00
3 | 2 | 0.19 | 2007-01-01
Meine Abfrage benötigt Daten aus allen 3 Tabellen (später sogar noch mehr). Mein Problem auf das ich stoße ist die Abfrage des Umsatzsteuersatzes anhand des Datums aus dem Einkauf.
Mein bisheriger Ansatz:
SELECT einkauf.eid, einkauf.datum, produkt.pid, produkt.name, ust.satz, MAX(ust.datum)
FROM einkauf
LEFT JOIN produkt ON produkt.pid = einkauf.pid
LEFT JOIN umsatzsteuer As ust ON ust.ustlgid = produkt.ustlgid
GROUP BY eid
Was ich benötige ist der richtige Datensatz aus Umsatzsteuer und das funktioniert nicht. Basiert die Lösung vllt auf Subqueries? Ich benötige auf jeden Fall eine möglichst performante Lösung.
Das Ergebnis soll dann soll dann so aussehen:
eid | eid.datum | pid | pid.name | ust.satz
1 | 2005-09-09 | 1 | Holz | 0.16
2 | 2009-09-09 | 2 | Staub | 0.19
Wäre schön, wenn mir jemand helfen könnte
habe mal wieder ein Problem mit einer Abfrage und viellicht könnt ihr mir helfen.
Szenario:
Ich habe eine Tabelle Produkte, die zwischen 2004 und 2009 gekauft worden sind.
Aufbau:
pid | name | ustlgid (Umsatzsteuerleistungsgruppe) | ...
1 | Holz | 2
2 | Staub | 2
Produkte werden bei mir eingekauft und in der Tabelle Einkauf gespeichert
Aufbau:
eid | pid | datum
1 | 1 | 2005-09-09
2 | 2 | 2009-09-09
Wenn die Güter verbraucht werden, habe ich eine Übersicht mit jeweiligen Bruttopreisen. Bis dato hatte ich immer eine PHP Funktion Ust() um mir die entsprechende Umsatzsteuer 7%, 16% oder 19% zu beschaffen. Diese ist jedoch ziehmlich unkomfortabel und langsam. Aus diesen Grund habe ich bereits eine Reihe mit reinen SQL Query's gelöst und was Performance angeht eine erhebliche Steigerung verzeichnen können. Nur jetzt hab ich meine Probleme mit der Umsatzsteuer. Ich habe eine Tabelle Umsatzsteuer.
Aufbau:
ustid | ustlgid | satz | datum
1 | 1 | 0.07 | 0000-00-00
2 | 2 | 0.16 | 0000-00-00
3 | 2 | 0.19 | 2007-01-01
Meine Abfrage benötigt Daten aus allen 3 Tabellen (später sogar noch mehr). Mein Problem auf das ich stoße ist die Abfrage des Umsatzsteuersatzes anhand des Datums aus dem Einkauf.
Mein bisheriger Ansatz:
SELECT einkauf.eid, einkauf.datum, produkt.pid, produkt.name, ust.satz, MAX(ust.datum)
FROM einkauf
LEFT JOIN produkt ON produkt.pid = einkauf.pid
LEFT JOIN umsatzsteuer As ust ON ust.ustlgid = produkt.ustlgid
GROUP BY eid
Was ich benötige ist der richtige Datensatz aus Umsatzsteuer und das funktioniert nicht. Basiert die Lösung vllt auf Subqueries? Ich benötige auf jeden Fall eine möglichst performante Lösung.
Das Ergebnis soll dann soll dann so aussehen:
eid | eid.datum | pid | pid.name | ust.satz
1 | 2005-09-09 | 1 | Holz | 0.16
2 | 2009-09-09 | 2 | Staub | 0.19
Wäre schön, wenn mir jemand helfen könnte
Kommentar