我是MySQL
......我正在尝试left join
3 个表,其中一个包含some_id、name、count、descr,第二个包含id、some_id、uni_id,最后一个包含uni_id、price、add 等所以当我尝试加入这三个表,它说没有这样的字段命名descr
在不修改它们的结构的情况下加入这些表的最佳方法是什么?
假设以下架构:
table1(some_id, name, count, descr)
,some_id
主键在哪里;table2(id, some_id, uni_id)
,some_id
的外键在哪里table1
;table3(uni_id, price, added)
,uni_id
的外键在哪里table2
。您需要做的只是LEFT OUTER JOIN
三个表之间的一个:
SELECT *
FROM table1 t1 LEFT JOIN table2 t2 ON (t1.some_id = t2.some_id)
LEFT JOIN table3 ON (t2.uni_id = t3.uni_id)
如果您可以发布表的架构,那将是理想的。在没有看到查询的情况下,听起来您引用了一个字段,您可能已将其别名为错误的表。
在最基本的层面上,“descr”并不存在,因为你试图引用它,但除此之外,如果不看到查询本身就很难说。
SELECT descr
FROM table1
LEFT JOIN table2 ON table2.some_id = table1.some_id
LEFT JOIN table3 ON table3.uni_id = table2.uni_id
应该做的伎俩。