Christoph: right join

Hi,

ich habe 3 Tabellen und möchte von 2 Tabellen alles angezeigt bekommen, was in der ersten Tabelle nicht vorhanden ist.

Mein Versuch mit right join:

SELECT DISTINCT t1.herstellernr, t2.techdata_herstlnr, t3.also_herstnr
FROM tspi_article t1
RIGHT JOIN tspi_techdata t2 ON t1.herstellernr = t2.techdata_herstlnr
RIGHT JOIN tspi_also t3 ON t1.herstellernr = t3.also_herstnr
WHERE t1.herstellernr IS NULL

Jetzt bekomm ich die Fehlermeldung: Cross dependency found in OUTER JOIN.  Examine your ON conditions

Löse ich es etwas anders:

SELECT DISTINCT t1.herstellernr, t2.techdata_herstlnr, t3.also_herstnr
FROM tspi_article t1
RIGHT JOIN tspi_techdata t2 ON t1.herstellernr = t2.techdata_herstlnr
RIGHT JOIN tspi_also t3 ON t2.techdata_herstlnr = t3.also_herstnr
WHERE t1.herstellernr IS NULL

Bekomme ich nur die Datensätze von der Tabelle t3 angezeigt und die von t2, aber auch nur die, die die gleichen Nummern wie von t3 haben.

Wie bekomme ich nun alle Daten von t2 und t3 angezeigt?

Grüße Christoph

Habe MySQL 4.0.25

  1. Als Ergänzung:

    Wenn ich

    SELECT t1.herstellernr, t2.techdata_herstlnr  
    FROM tspi_article t1  
    RIGHT JOIN tspi_techdata t2  
    ON t1.herstellernr = t2.techdata_herstlnr  
    WHERE t1.herstellernr IS NULL
    

    eingebe, bekomme ich genau die Daten die ich haben möchte, aber nur von der Tabelle 2.

    Dasselbe funktioniert noch für Tabelle 3

    SELECT t1.herstellernr, t3.also_herstnr  
    FROM tspi_article t1  
    RIGHT JOIN tspi_also t3  
    ON t1.herstellernr = t3.also_herstnr  
    WHERE t1.herstellernr IS NULL
    

    Aber wie bekomm ich die 3 Tabellen zusammen, dass sie mir auch alles ausgeben?

    Grüße

    Christoph

    1. Hallo

      SELECT t1.herstellernr, t2.techdata_herstlnr

      FROM tspi_article t1
      RIGHT JOIN tspi_techdata t2
      ON t1.herstellernr = t2.techdata_herstlnr
      WHERE t1.herstellernr IS NULL

      
      >   
      > eingebe, bekomme ich genau die Daten die ich haben möchte, aber nur von der Tabelle 2.  
      >   
      > Dasselbe funktioniert noch für Tabelle 3  
      >   
      > ~~~sql
      
      SELECT t1.herstellernr, t3.also_herstnr  
      
      > FROM tspi_article t1  
      > RIGHT JOIN tspi_also t3  
      > ON t1.herstellernr = t3.also_herstnr  
      > WHERE t1.herstellernr IS NULL
      
      

      Aber wie bekomm ich die 3 Tabellen zusammen, dass sie mir auch alles ausgeben?

      Verwende UNION, das kann MySQL ab Version 4.0.
      Bei OUTER JOINs auf OUTER JOINs oder gar Klammerung sieht es erst ab 5.0.12 gut aus :-)

      Freundliche Grüße

      Vinzenz

      1. yo,

        Verwende UNION, das kann MySQL ab Version 4.0.

        besser wäre in seinem falle UNION ALL

        Ilja