Mysql 子-父系谱-另一父的表
我有一个名为“child_parent”的表,其中列出了孩子及其父母的ID,比如说,一个名为“person”的表。子-父对是唯一的,并且一个子项最多只能有两个父项Mysql 子-父系谱-另一父的表,mysql,join,genealogy,Mysql,Join,Genealogy,我有一个名为“child_parent”的表,其中列出了孩子及其父母的ID,比如说,一个名为“person”的表。子-父对是唯一的,并且一个子项最多只能有两个父项 child parent 3 1 3 2 4 1 7 8 我想要一个“其他”父表(称之为“ChildOfpID_OtherParent”),其中包含所有父ID(pID)等于(比如)1的子项,如果另一个父项未列出,则为NULL。如果pID=1,我想: child_of_pID other_
child parent
3 1
3 2
4 1
7 8
我想要一个“其他”父表(称之为“ChildOfpID_OtherParent”),其中包含所有父ID(pID)等于(比如)1的子项,如果另一个父项未列出,则为NULL。如果pID=1,我想:
child_of_pID other_parent
3 2
4 NULL
我很难弄清楚如何生成这样的表。此查询将为您的示例返回正确的结果
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;
选择p1.child作为\u pID的子\u,选择p2.parent作为其他\u父项
从作为p1的子项\父项
左联接子项\父项p2
在p1.parent上p2.parent和p1.child=p2.child
其中p1.parent=1;
效果很好-我必须更多地研究别名。我认为缺少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;
选择p1.child作为\u pID的子\u,选择p2.parent作为其他\u父项
从作为p1的子项\父项
左键将子项与父项连接为p2
在p1.parent上p2.parent和p1.child=p2.child
其中p1.parent=pID;