如何多个连接表?

时间:2012-07-07 07:58:51

标签: mysql

我有2张桌子。

工人和经验

在表工作者中有行worker_parent(因为一个工作者可以负责其他工作)。

不,我必须连接这样的表:

SELECT w1.* FROM workers w1 LEFT JOIN workers w2 ON (w2.id = w1.worker_parent)

那没关系。但我必须通过w2的经验订购,我尝试添加表体验,但它连接到w1而不是w2。

我的问题是如何将表体验(具有行worker_id)添加到w2并按经验和来自w1的SELECT数据进行排序。

这是我的尝试。

SELECT w1.* FROM workers w1 LEFT JOIN workers w2 ON (w2.id = w1.worker_parent) LEFT JOIN experience e ON (w2.id = e.worker_id) ORDER BY e.experience DESC

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您只想要有父母经验的童工, 你需要添加一个where(或更改连接类型) (为了便于阅读,我将w1和w2重命名为w_child和w_parent)

SELECT w_child.*, e_parent.experience
FROM workers AS w_child 
LEFT JOIN workers AS w_parent ON (w_parent.id = w_child.worker_parent) 
LEFT JOIN experience AS e_parent ON (w_parent.id = e_parent.worker_id) 
WHERE e_parent.worker_id IS NOT NULL
ORDER BY e_parent.experience DESC