我已经为此绞尽脑汁已经有一段时间了。所以是时候问问大家了。我有以下(简化的)MySQL 表,名为“fam”:
+--------------+------------+------------+-----------+-----------+
+ 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 列)。
任何建议将不胜感激!