這些都是假表名,但在我的實際問題中,想象一下業務規則,說明每個父代都有1或2個子代。這些孩子有0或1的數量。同一父母的兩個孩子不能有相同的數字。MySQL:將另一個表中的2行合併到一個結果行中
我想要訪問children
的行中的字段,但希望將值放入數字前綴字段中。例如:
parenttochildrenassoc:
+-------------+-------------+
| parent | child |
+-------------+-------------+
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
+-------------+-------------+
孩子:
+-------------+-------------+------------+
| child | number | name |
+-------------+-------------+------------+
| 1 | 0 | Chuck |
| 2 | 1 | Sally |
| 3 | 0 | Carly |
| 4 | 1 | Billy |
+-------------+-------------+------------+
期望的結果:
+-------------+-------------+------------+
| parent | child0 | child1 |
+-------------+-------------+------------+
| 1 | Chuck | Sally |
| 2 | Carly | NULL |
| 3 | NULL | Billy |
+-------------+-------------+------------+
最近我可以得到低於:
SELECT A.parent, C0.name as child0, C1.name as child1
FROM parenttochildassoc A
LEFT JOIN children C0 ON C0.child = A.child AND C0.number = 0
LEFT JOIN children C1 ON C1.child = A.child AND C1.number = 1
產生這樣的:
+-------------+-------------+------------+
| parent | child0 | child1 |
+-------------+-------------+------------+
| 1 | Chuck | NULL |
| 1 | NULL | Sally |
| 2 | Carly | NULL |
| 3 | NULL | Billy |
+-------------+-------------+------------+
我如何扁平化呢?它似乎與此answer中描述的「樞軸」非常相似(其中一個建議的答案與我的嘗試相同),但parenttochildrenassoc
多對一的事實似乎打破了它。
有每個單親家庭子女的最大數目? – shmosel
1或2個孩子 – thedarklord47