我有一个名为“child_parent”的表,其中列出了孩子及其父母的ID,例如,一个名为“person”的表。孩子 - 父母对是独一无二的,孩子不能超过两个父母。
child parent
3 1
3 2
4 1
7 8
如果未列出另一个父级,我想要一个父级ID(pID)等于1的所有子级的“其他”父级(称为“ChildOfpID_OtherParent”),如果为1,则为NULL。所以,如果pID = 1,我想要:
child_of_pID other_parent
3 2
4 NULL
我无法弄清楚如何生成这样的表格。
答案 0 :(得分:2)
此查询将返回示例
的正确结果SELECT p1.child as child_of_pID, p2.parent as other_parent
FROM child_parent AS p1
LEFT JOIN child_parent p2
ON p1.parent <> p2.parent AND p1.child = p2.child
WHERE p1.parent = 1;
答案 1 :(得分:0)
这很有效 - 我必须更多地研究别名。我认为AS缺失了,并且推广到pID(上例中为= 1),我会写:
SELECT p1.child as child_of_pID, p2.parent as other_parent
FROM child_parent AS p1
LEFT JOIN child_parent AS p2
ON p1.parent <> p2.parent AND p1.child = p2.child
WHERE p1.parent = pID;