Hallo, ich habe einen inner join, der mir zu jedem Stück Inventar den letzten aktuellen Eintrag der Standorthistorie zurückgibt. Nun kann es aber sein, dass ein Stück Inventar noch keinen Standort hatte. Wenn ich Inner Join verwende, bekomme ich diese Datensätze nicht angezeigt. Wie muss ich das dann nach left outer (?) umformen
Also wenn ich den SQL so wie oben ausführe, bekomme ich 654 Treffer, 3 Treffer zu wenig, die keinen Standort in der Tabelle Standort haben.
Forme ich das rechte inner join zu einem left join bekomme ich 1550 Treffer, also irgendwie mehr als das doppelte.(evtl alle Standorte zu einem Stück Inventar zugeordnet). und wenn ich dann noch den linken inner join in einen left join Umforme, habe ich 1553 Treffer, also inkl der fehlenden Treffer, aber leider alles doppelt und dreifach.
Mache ich nur den linken Join als left join gibt es eine Fehlermeldung. Achtung, ist ein Access 2000.
Das ist der Ausdruck der von der logischen Denkweise richtig sein sollte, aber Fehlermeldung : Verknüpfungsausdruck nicht unterstützt gibt.
Code:
SELECT
b.RHW_NR,
FROM (BESTAND b inner JOIN STANDORT s ON b.RHW_NR = s.RHW_NR)
inner join (select rhw_nr,max(standort_id) as mi from standort a group by rhw_nr)
Maxs on s.rhw_nr=Maxs.rhw_nr and s.standort_id=maxs.mi
WHERE 1=1
AND b.SCHROTT LIKE 'N'
AND b.TYP IN (10)
ORDER BY b.RHW_NR DESC;
Also wenn ich den SQL so wie oben ausführe, bekomme ich 654 Treffer, 3 Treffer zu wenig, die keinen Standort in der Tabelle Standort haben.
Forme ich das rechte inner join zu einem left join bekomme ich 1550 Treffer, also irgendwie mehr als das doppelte.(evtl alle Standorte zu einem Stück Inventar zugeordnet). und wenn ich dann noch den linken inner join in einen left join Umforme, habe ich 1553 Treffer, also inkl der fehlenden Treffer, aber leider alles doppelt und dreifach.
Mache ich nur den linken Join als left join gibt es eine Fehlermeldung. Achtung, ist ein Access 2000.
Das ist der Ausdruck der von der logischen Denkweise richtig sein sollte, aber Fehlermeldung : Verknüpfungsausdruck nicht unterstützt gibt.
Code:
FROM (BESTAND AS b left JOIN STANDORT AS s ON b.RHW_NR = s.RHW_NR) inner JOIN [select rhw_nr,max(standort_id) as mi from standort a group by rhw_nr]. AS Maxs ON (s.standort_id=maxs.mi) AND