Sprint
Erfahrenes Mitglied
Hallo zusammen,
ich habe hier ein Problem mit einer Abfrage, bei der sich JOIN und WHERE gegenseitig blockieren. Es geht um eine Tabelle mit Fahrzeugen, die auf zweierlei Wegen verkauft werden können.
1. Das Fahrzeug wird über das System verkauft. In dem Fall ist seine Nummer in den Kaufverträgen zu finden. In der folgenden Abfrage das letzte JOIN.
2. Das Fahrzeug wird nicht über das System verkauft. Das wird daran erkannt, daß es eines Tages in den Daten von mobile.de nicht mehr auftaucht. Dann wird ein Kennzeichen "mobile_geloescht" in der kfz Tabelle gesetzt.
Es gibt jetzt aber eine Abfrage, die nur die verkauften Fahrzeuge auflisten soll und da müssen natürlich auch die gelistet werden, die nicht über das System liefen. Sollte also mit einem "WHERE mobile_geloescht = 1" erledigt sein. Allerdings blockieren sich diese WHERE Bedingung und das JOIN zu den Kaufverträgen gegenseitig.
Die einfachste Abfrage könnte z.B. so aussehen:
So lange da aber das JOIN auf den Kaufvertrag drin ist, wird kein Datensatz angezeigt, der "gelöscht" wurde.
Gibt es eine Möglichkeit, das beides zu verbinden? Ein späteres Ausfiltern wie bei einer Abfrage auf "verfügbar" funktioniert ja auch nicht, da die betroffenen Datensätze erst gar nicht gelesen werden.
Vielen Dank schon mal im Voraus,
Sprint
ich habe hier ein Problem mit einer Abfrage, bei der sich JOIN und WHERE gegenseitig blockieren. Es geht um eine Tabelle mit Fahrzeugen, die auf zweierlei Wegen verkauft werden können.
1. Das Fahrzeug wird über das System verkauft. In dem Fall ist seine Nummer in den Kaufverträgen zu finden. In der folgenden Abfrage das letzte JOIN.
2. Das Fahrzeug wird nicht über das System verkauft. Das wird daran erkannt, daß es eines Tages in den Daten von mobile.de nicht mehr auftaucht. Dann wird ein Kennzeichen "mobile_geloescht" in der kfz Tabelle gesetzt.
Es gibt jetzt aber eine Abfrage, die nur die verkauften Fahrzeuge auflisten soll und da müssen natürlich auch die gelistet werden, die nicht über das System liefen. Sollte also mit einem "WHERE mobile_geloescht = 1" erledigt sein. Allerdings blockieren sich diese WHERE Bedingung und das JOIN zu den Kaufverträgen gegenseitig.
Die einfachste Abfrage könnte z.B. so aussehen:
SQL:
SELECT
kf.kfzid,
kf.intnr,
kf.fin,
m.marke,
mo.modellname,
kf.ind_modell,
kf.variante,
kfa.aussenfarbe,
kfa.metallic,
kfd.leistung,
kfd.ez,
kfz.km,
kf.preis,
kf.ausweisbar,
kv.userid,
kv.kaufdatum,
kv.kdnr
FROM kfz kf
JOIN kfzausstattung kfa ON kf.kfzid = kfa.kfzid
JOIN kfzdaten kfd ON kf.kfzid = kfd.kfzid
JOIN kfzzustand kfz ON kf.kfzid = kfz.kfzid
JOIN mmarken m ON kf.hersteller = m.markenr
JOIN mmodelle mo ON kf.modell = mo.modellid
JOIN kaufvertrag kv ON kf.kfzid = kv.kfzid and kv.storno = 0
WHERE
kf.hersteller = 'Ford' AND
kf.mobile_geloescht = 1
So lange da aber das JOIN auf den Kaufvertrag drin ist, wird kein Datensatz angezeigt, der "gelöscht" wurde.
Gibt es eine Möglichkeit, das beides zu verbinden? Ein späteres Ausfiltern wie bei einer Abfrage auf "verfügbar" funktioniert ja auch nicht, da die betroffenen Datensätze erst gar nicht gelesen werden.
Vielen Dank schon mal im Voraus,
Sprint