我有一个表,其中配偶和子女链接到主要用户。

+----------------+-------------------+----------+------------------------------+------------------+
|  Id | User_ID           | Rel_Type | Applno                       | RelationWith     |
+----------------+-------------------+----------+------------------------------+------------------+
|        1234756 | aambu ghosha      | self     | 201708180921      | aambu ghosha     |
|        1235146 | parvati ghosha    | spouse   |  NULL | aambu ghosha     |
|        1235147 | ananta ghosha    | Children   | 201708180921      | aambu ghosha     |
|         500787 | anant01011975     | self     | 20170811171403999L    | anant01011975    |
|         501626 | chandu1988        | children | NULL                         | anant01011975    |
|        1706064 | atmaram sutar     | self     | 20170821094537517L  | atmaram sutar    |
|        1706494 | venu sutar        | spouse   | 20170821094537517L  | atmaram sutar    |

在上述例子中,主要申请人“aambu ghosha”是“self”(主要申请人)。配偶和子女(Parvati和Ananta)需要被视为单一申请人。
aambu ghosha 3
anant01011975 2
atmaram sutar 2

主要申请人的人数应包括其家庭成员。预期结果如上图所示。
我想这可以通过使用self-join来实现,但我不确定有多少孩子与主申请人有关联。找到伯爵的最佳方法是什么?
http://sqlfiddle.com/#!9/30945c/2/0
更新:
如何自我加入和更新链接到主申请人的申请号?例如,第二条记录的空值应改为201708180921。

最佳答案

假设你只有一个级别的孩子,这就行了

SELECT userid, count(*)
FROM tab p
JOIN tab ch ON p.user_id = ch.RelationWith
WHERE p.user_id = p.RelationWith
GROUP BY userid

实际上,即使是更简单的查询也会生成您请求的结果
SELECT RelationWith, count(*)
FROM tab
GROUP BY RelationWith

关于mysql - 当子选择的数量未知时自我加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45958879/

10-10 00:57