左联接3表错误#1066

3duebb1j  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(304)

我试图离开join 3表,但出现以下错误
“#1066-非唯一表/别名:'uid'”
我尝试了一些我在网上找到的建议,比如使用别名 tbl_add_unit.uid AS UnitUID 但那没用。
我的代码是:

SELECT tbl_add_unit.uid, tbl_add_rent.r_unit_no, tbl_add_electricity_bill.unit_no
FROM tbl_add_unit, tbl_add_rent, tbl_add_electricity_bill
LEFT JOIN tbl_add_unit.uid ON tbl_add_rent.r_unit_no
LEFT JOIN tbl_add_unit.uid ON tbl_add_electricity_bill.unit_no;
niknxzdl

niknxzdl1#

在您的查询中,似乎有用逗号分隔的表。我假设您只想加入这些表来获取信息。只需使用join语句并为每个表指定别名即可。

SELECT 
   tblAddUnit.uid, tblAddRent.r_unit_no, tblAddElectricityBill.unit_no
FROM 
   tbl_add_unit tblAddUnit 
LEFT JOIN 
   tbl_add_rent tblAddRent ON
   tblAddUnit.uid ON tblAddRent.r_unit_no
LEFT JOIN 
   tbl_add_electricity_bill tblAddElectricityBill ON 
   tblAddElectricityBill.unit_no = tblAddUnit.uid;
gudnpqoy

gudnpqoy2#

放弃join操作的老式逗号语法。这些逗号相当于 JOIN 关键字。通常,有一个用于匹配表的条件,在 ON 条款。
看起来我们可能在寻找一个结果集,类似于这样的查询返回的结果:

SELECT u.uid
      , r.r_unit_no
      , b.unit_no
   FROM tbl_add_unit u
   LEFT
   JOIN tbl_add_rent r
     ON r.r_unit_no = u.uid
   LEFT
   JOIN tbl_add_electricity_bill b
     ON b.unit_no = u.uid
  WHERE ...
  ORDER
     BY ...

问题是什么?

7xzttuei

7xzttuei3#

连接的一般语法应该是。。。

SELECT some stuff
FROM table1
JOIN table2 ON table1.blahA = table2.blahB
JOIN table3 ON table2.blahC = table3.blahD
;
``` `LEFT JOIN` 保留联接左侧的数据,即使右侧没有匹配项, `INNER JOIN` 仅保留关联数据。
uplii1fm

uplii1fm4#

你很接近了,让我们的目标更接近于:

SELECT tbl_add_unit.uid, tbl_add_rent.r_unit_no, tbl_add_electricity_bill.unit_no
FROM tbl_add_unit
LEFT JOIN tbl_add_rent ON tbl_add_unit.uid = tbl_add_rent.r_unit_no
LEFT JOIN tbl_add_electricity_bill ON tbl_add_unit.uid = 
tbl_add_electricity_bill.unit_no;

这假设连接中的内容是真的,因此:tbl\u add\u unit.uid=tbl\u add\u rent.r\u unit\u no和tbl\u add\u unit.uid=tbl\u add\u electrical\u bill.unit\u no。如果是真的,就可以开始了。

相关问题