Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql连接多表错误:非唯一表/别名_Mysql_Left Join - Fatal编程技术网

Mysql连接多表错误:非唯一表/别名

Mysql连接多表错误:非唯一表/别名,mysql,left-join,Mysql,Left Join,我一直很敏感。 我试图从多个表中获取多个列。 我的产品p num表的左连接导致错误:错误代码:1066。非唯一表/别名:“产品编号” 我在其他stackoverflow示例中看到了这个错误。我试着修改不同的版本,但不确定我遗漏了什么 SELECT tbls.SNum,tblmar.AssemPart, tblmar.wifi, `product p num`.`Customer Name` FROM floor.tbls, manu.tblmar, def.`product p num` L

我一直很敏感。 我试图从多个表中获取多个列。 我的
产品p num
表的左连接导致错误:
错误代码:1066。非唯一表/别名:“产品编号”

我在其他stackoverflow示例中看到了这个错误。我试着修改不同的版本,但不确定我遗漏了什么

SELECT tbls.SNum,tblmar.AssemPart, tblmar.wifi, `product p num`.`Customer Name`

FROM floor.tbls, manu.tblmar, def.`product p num`

LEFT JOIN tblmar ON tbls.PartNum = tblmar.AssemPart 
LEFT JOIN `product p num` on tblmar.AssemPart = `product p num`.`product p`

WHERE tblmar.AssemPart IS NOT NULL 
AND `product p num`.`Customer Name` = 'Google' 
AND tblmar.wifi = 1 
ORDER BY `product p num`.`product p`;

您正在执行两次引用同一表的查询

如果要执行此操作,需要为这些表添加别名。例如:

SELECT *
FROM table AS alias1
LEFT JOIN table AS alias2

您正在执行两次引用同一表的查询

如果要执行此操作,需要为这些表添加别名。例如:

SELECT *
FROM table AS alias1
LEFT JOIN table AS alias2

问题在于,您多次加入相同的表,而没有对其中任何一个表产生别名。你想加入他们两次吗?我不明白你为什么会在这里故意这么做

您想要的逻辑可能是:

SELECT 
  tbls.SNum
  , tblmar.AssemPart
  , tblmar.wifi
  , `product p num`.`Customer Name`
FROM 
  floor.tbls
  LEFT JOIN tblmar 
    ON tbls.PartNum = tblmar.AssemPart 
  LEFT JOIN `product p num` 
    on tblmar.AssemPart = `product p num`.`product p`
WHERE 
  tblmar.AssemPart IS NOT NULL 
  AND `product p num`.`Customer Name` = 'Google' 
  AND tblmar.wifi = 1 
ORDER BY 
  `product p num`.`product p`;

问题在于,您多次加入相同的表,而没有对其中任何一个表产生别名。你想加入他们两次吗?我不明白你为什么会在这里故意这么做

您想要的逻辑可能是:

SELECT 
  tbls.SNum
  , tblmar.AssemPart
  , tblmar.wifi
  , `product p num`.`Customer Name`
FROM 
  floor.tbls
  LEFT JOIN tblmar 
    ON tbls.PartNum = tblmar.AssemPart 
  LEFT JOIN `product p num` 
    on tblmar.AssemPart = `product p num`.`product p`
WHERE 
  tblmar.AssemPart IS NOT NULL 
  AND `product p num`.`Customer Name` = 'Google' 
  AND tblmar.wifi = 1 
ORDER BY 
  `product p num`.`product p`;

关于如何连接表,您混合了两种不同的语法方式。在from子句中包含了所有表,然后又将它们连接起来。

在如何连接这些表方面,您混合了两种不同的语法方式。from子句中包含了所有表,然后您将再次联接它们。

这里有一个建议:不要将联接操作的老式逗号语法与较新的联接关键字语法混合使用。此查询中的FROM子句引用了五个表。(有两个对
tblmar
的引用和两个对
product p num
的引用。我认为您只需要从
行修改
,并删除第一个逗号之后的所有内容(包括第一个逗号)。(我还建议您避免使用空格(和其他不允许的字符)作为表名的一部分。使用下划线字符而不是空格,例如
product\u p\u num
)我修改了from行,比如Jacobm001,它解决了这个问题。我添加了所有的表,因为在出现别名错误之前我一直存在问题。所以我没有意识到是我的
from
导致了这个问题。没有意识到
连接了
替换声明了多个表@spencer7593@spencer7593还有…表名不是我的,是我做的我所能做的不多。但是我知道不能用空格来命名它们。这里有一个建议:不要将用于连接操作的老式逗号语法与较新的连接关键字语法混合使用。此查询中的FROM子句引用了五个表。(有两个对
tblmar
的引用和两个对
product p num
的引用。我认为您只需要从
行修改
,并删除第一个逗号之后的所有内容(包括第一个逗号)。(我还建议您避免使用空格(和其他不允许的字符)作为表名的一部分。使用下划线字符而不是空格,例如
product\u p\u num
)我修改了from行,比如Jacobm001,它解决了这个问题。我添加了所有的表,因为在出现别名错误之前我一直存在问题。所以我没有意识到是我的
from
导致了这个问题。没有意识到
连接了
替换声明了多个表@spencer7593@spencer7593还有…表名不是我的,是我做的我所能做的不多。但是我知道不能用空格来命名它们。好吧,问题是当我使用连接时,
From
不能是所有的表。正确吗?@narue1992问题是你使用了两种不同的连接样式。你只需要将每个表连接一次。每个名称只能在
From
子句中出现一次它的别名(这里不需要).from
子句是介于
from
where
之间的所有内容。好吧,那么问题是当我使用连接时,
from
不能是所有的表。正确吗?@narue2992问题是您使用了两种不同的连接样式。您只需要连接每个表一次。每个名称只应出现在
fr中om
子句一次,除非它有别名(这里不需要)。from
子句是介于from
和where
之间的所有内容。