我试图离开联接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;
答案 0 :(得分:2)
放弃联接操作的老式逗号语法。这些逗号等同于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 ...
问什么?
答案 1 :(得分:1)
您接近了,让我们瞄准更类似于:
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_add_unit.uid = tbl_add_rent.r_unit_no和tbl_add_unit.uid = tbl_add_electricity_bill.unit_no。如果是这样,那你就走了。
答案 2 :(得分:0)
联接的一般语法应类似于...
SELECT some stuff
FROM table1
JOIN table2 ON table1.blahA = table2.blahB
JOIN table3 ON table2.blahC = table3.blahD
;
LEFT JOIN
保留联接左侧的数据,即使右侧没有匹配项,INNER JOIN
仅保留联接的数据。
答案 3 :(得分:0)
在您的查询中,看起来您有用逗号分隔的表。我假设您只是想加入这些表来获取信息。您可以只使用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;