0

我是MySQL......我正在尝试left join3 个表,其中一个包含some_id、name、count、descr,第二个包含id、some_id、uni_id,最后一个包含uni_id、price、add 等所以当我尝试加入这三个表,它说没有这样的字段命名descr

在不修改它们的结构的情况下加入这些表的最佳方法是什么?

4

3 回答 3

1

假设以下架构:

  • 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)

参考:

于 2012-09-25T13:34:45.480 回答
0

如果您可以发布表的架构,那将是理想的。在没有看到查询的情况下,听起来您引用了一个字段,您可能已将其别名为错误的表。

在最基本的层面上,“descr”并不存在,因为你试图引用它,但除此之外,如果不看到查询本身就很难说。

于 2012-09-25T13:35:10.240 回答
0
SELECT descr
FROM table1
LEFT JOIN table2 ON table2.some_id = table1.some_id
LEFT JOIN table3 ON table3.uni_id = table2.uni_id

应该做的伎俩。

于 2012-09-25T13:36:42.330 回答