【问题标题】:SQL error whith INNER JOIN + LEFT JOININNER JOIN + LEFT JOIN 的 SQL 错误
【发布时间】:2017-10-25 15:54:45
【问题描述】:

我正在尝试查询数据在 4 个表中的位置:

TAFCBHISTPED = NUPED, DTEMIS

TAFGRPROD = CDGRPR, DSGRPR

TAFPROD = CDPROD, CDGRPR

TAFITHISTPED = NUPED, CDPROD, QTPED

我当前的查询如下所示:

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

但是我得到以下错误:

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

【问题讨论】:

  • Stack Overflow 的主站点只有英文版,试试Stack Overflow em Português
  • 欢迎来到 SO。这个网站是一个英文网站,所以请编辑你的问题,用英文解释你的问题是什么。否则我们将无法为您提供帮助
  • 您的查询仅引用 3 个表 - 因此您不能包含第四个表中的列而不加入它或以某种方式使用子查询。由于您尝试将第四个表中的列包含在选择列表中,因此您似乎需要加入该表。如何做到这一点取决于架构中的关系。

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

您与 TAFGRPROD 表没有关系

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

【讨论】:

    【解决方案2】:

    要连接表,您需要有适当的关系。下图解释了 SQL 中可用的连接。

    表 2 和表 3 没有关系,因此连接将失败。此链接上的 SQL 连接有用教程。 http://www.sql-join.com/sql-join-types/

    【讨论】:

      猜你喜欢
      • 2016-04-28
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2016-10-31
      • 2018-07-10
      • 1970-01-01
      • 2012-02-28
      相关资源
      最近更新 更多