# [ACCESS] Inner Join nach Outer Join umformen ?



## AlexD1979 (25. April 2006)

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 


```
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.

```
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
```


----------



## AlexD1979 (2. Mai 2006)

Hallo, Hat keiner eine Idee dazu?
Vielleicht noch etwas vereinfacht dargestellt
Tabelle A :
Spalten : INV_ID,BEZ

Tabelle B:
Spalten: STANDORT_ID, INV_ID,K_STELL

INV_ID ist der gemeinsame Schlüssel, d.h. A.INV_ID kann in Tabelle B mehrfach vorkommen, dort ist die ID die Standort_ID. Ich brauche nun eine Liste der A.INV_ID, wo A.INV_ID in B.INV_ID der aktuelleste Datensatz ist (höchste Standort_ID pro INV_ID) hat. in Tabelle B muss aber nicht zwingend ein B.INV_ID haben, wenn noch kein Standort assoziiert ist.


----------

