child-parent geneology - 另一位父母的表

时间:2015-12-13 14:29:46

标签: mysql join genealogy

我有一个名为“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

我无法弄清楚如何生成这样的表格。

2 个答案:

答案 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;