2017-10-25 4 views
-1

Ich versuche, eine Abfrage zu machen, wo die Daten in 4 Tabellen:SQL-Fehler whith INNER JOIN + LEFT JOIN

TAFCBHISTPED = NUPED, DTEMIS 

TAFGRPROD = CDGRPR, DSGRPR 

TAFPROD = CDPROD, CDGRPR 

TAFITHISTPED = NUPED, CDPROD, QTPED 

Meine aktuelle Abfrage wie folgt aussieht:

SELECT 
    TAFCBHISTPED.NUPED, 
    TAFCBHISTPED.DTEMIS, 
    TAFGRPROD.CDGRPR, 
    TAFGRPROD.DSGRPR, 
    TAFPROD.CDPROD, 
    TAFPROD.CDGRPR, 
    TAFITHISTPED.NUPED, 
    TAFITHISTPED.CDPROD, 
    TAFITHISTPED.QTPED 
FROM 
    dbo.TAFCBHISTPED -- table1 
INNER 
JOIN dbo.TAFITHISTPED -- table2 
ON TAFCBHISTPED.NUPED = TAFITHISTPED.NUPED 
LEFT 
JOIN dbo.TAFPROD -- table3 
    ON TAFGRPROD.CDGRPR = TAFPROD.CDGRPR 

aber ich der folgende Fehler:

SQLState: 42000 Error Code: 4104 Message: 
[Microsoft] [ODBC Driver 13 for SQL Server] [SQL Server] 
The multipart identifier "TAFGRPROD.CDGRPR" can not be associated. 
+0

Die Haupt-Stack Overflow-Site ist nur in englischer Sprache, versuchen Sie [pt.so] – jmoerdyk

+0

Willkommen bei SO. Diese Seite ist eine englischsprachige Website. Bitte bearbeiten Sie Ihre Frage, um auf Englisch zu erklären, was Ihr Problem ist. Andernfalls können wir Ihnen nicht helfen –

+0

Ihre Abfrage bezieht sich nur auf 3 Tabellen - Sie können also keine Spalte aus der vierten einschließen, ohne sich ihr anzuschließen oder eine Unterabfrage in irgendeiner Weise zu verwenden. Da Sie versuchen, Spalten aus dieser vierten Tabelle in die Auswahlliste aufzunehmen, scheint es, als müssten Sie dieser Tabelle beitreten. Wie Sie das tun, hängt von den Beziehungen in Ihrem Schema ab. – SMor

Antwort

1

Sie haben die Beziehung nicht mit der TAFGRPROD Tabelle

SELECT 
    TAFCBHISTPED.NUPED, 
    TAFCBHISTPED.DTEMIS, 
    TAFGRPROD.CDGRPR, 
    TAFGRPROD.DSGRPR, 
    TAFPROD.CDPROD, 
    TAFPROD.CDGRPR, 
    TAFITHISTPED.NUPED, 
    TAFITHISTPED.CDPROD, 
    TAFITHISTPED.QTPED 
FROM TAFCBHISTPED 
INNER JOIN dbo.TAFITHISTPED ON 
TAFCBHISTPED.NUPED = TAFITHISTPED.NUPED 

--CHECK THE REFERENCE FIELDS 
LEFT JOIN dbo.TAFGRPROD ON 
    TAFCBHISTPED.CDGRPR = TAFGRPROD.CDGRPR 

LEFT JOIN dbo.TAFPROD ON 
TAFGRPROD.CDGRPR = TAFPROD.CDGRPR 
0

Um Tabellen zu verbinden, müssen Sie geeignete Beziehungen haben. Das folgende Diagramm erläutert, welche Joins in SQL verfügbar sind.

Tabelle 2 und Tabelle 3 haben keine Beziehung, daher schlägt die Verknüpfung fehl. Nützliches Tutorial für SQL-Join auf diesem Link. http://www.sql-join.com/sql-join-types/