【发布时间】:2015-11-02 07:34:41
【问题描述】:
我想加入基于 Table1 (product) 和 Table3 (system_type) 的结果。而 Table2 (system_cat) 不包括我想加入的列。 如何将 Table1 和 Table2 连接起来,但只能在一个语句中连接 Table1 和 Table3?
当前未加入的版本:
SELECT * FROM product LEFT JOIN system_cat USING (cat_id) LEFT JOIN system_type USING (type_id) WHERE system_furniture_check = 0 AND cat_id = :c ORDER BY sortorder
加入非工作版本(尝试1):
SELECT * FROM product LEFT JOIN system_cat USING (cat_id) LEFT JOIN system_type USING (type_id) WHERE system_furniture_check = 0 AND cat_id = :c ORDER BY sortorder
替代加入的非工作版本(尝试 2):
SELECT product.*, system_cat.*, system_type.*
FROM product
JOIN system_cat
ON system_cat.cat_id = product.cat_id
JOIN system_type
ON system_type.type_id = product.type_id
WHERE system_furniture_check = 0 AND cat_id = :c ORDER BY sortorder
错误:
带有消息“SQLSTATE[23000]”的未捕获异常“PDOException”:违反完整性约束:where 子句中的 1052 列“cat_id”不明确
表格:
- 产品 – type_id, cat_id
- system_cat – cat_id
- system_type – type_id, cat_id
【问题讨论】:
-
您需要在 where 子句中的
cat_id之前添加一个表名(或别名) -
错误提示您必须指定
cat_id的表。看看你在哪里使用cat_id并注意添加一个表格,我会工作得很好