私はかなり長い間、これについて頭を悩ませてきました。それでは、皆さんに質問する時が来ました。「fam」と呼ばれる次の (簡略化された) MySQL テーブルがあります。
+--------------+------------+------------+-----------+-----------+
+ Year + ParentID1 + ParentID2 + ChildID1 + ChildID2 +
+--------------+------------+------------+-----------+-----------+
+ 1970 + 1111 + 2222 + 3333 + 4444 +
+ 1975 + 1111 + 3434 + 4545 + 5656 +
+ 1980 + 2222 + 3344 + 5566 + 6677 +
+ 1990 + 5656 + 3333 + 9090 + 0909 +
+ 1995 + 4444 + 5656 + 1010 + 1313 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
私が基本的に達成したいのは、後で親になった子供の数を確認することです。私はこのようなことがうまくいくかもしれないと思った
SELECT COUNT(fam1.ChildID1)+COUNT(fam1.ChildID2) as `recruits`
FROM fam fam1
JOIN fam fam2
ON (fam1.ChildID1=fam2.ParentID1 OR fam1.ChildID1=fam2.ParentID2)
OR (fam1.ChildID2=fam2.ParentID1 OR fam1.ChildID2=fam2.ParentID2)
しかし、残念なことに、新兵は 8 人ではなく、3 人 (3333、4444、および 5656) しかいません。私が頭を悩ませる最大の問題は、ID が異なる列に表示される可能性があるという事実をどのように説明するかということです (たとえば、5656 は 1990 年の列 1 と 1995 の列 2 にあります)。
どんな提案でも大歓迎です!