我有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
感谢您的帮助
答案 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