tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
4514
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AlexD1979 AlexD1979 ist offline Mitglied Gold
    Registriert seit
    Feb 2003
    Ort
    Hannover
    Beiträge
    208
    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

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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 :
    1
    
    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
     

  2. #2
    AlexD1979 AlexD1979 ist offline Mitglied Gold
    Registriert seit
    Feb 2003
    Ort
    Hannover
    Beiträge
    208
    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.
    Geändert von AlexD1979 (02.05.06 um 10:55 Uhr)
     

Ähnliche Themen

  1. Left outer join --- eql <-> sql
    Von ThirdKeeper im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 14.07.09, 13:10
  2. left outer join Alternative?
    Von LarsHH im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 23.10.07, 10:36
  3. MS Access: Cross Join / Full Join: Anwendungsbeispiel
    Von semirb im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 13.12.06, 23:43
  4. SQL Delete mit Outer Join
    Von FlasH2006 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 03.11.06, 11:32
  5. Ms Sql - Outer Join?!
    Von BGrojer im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 15.11.04, 07:18