1

我有 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 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

感谢帮助

4

1 回答 1

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
于 2012-07-07T08:41:18.013 回答