2017-08-30 6 views
3

私は配偶者と子供がメインユーザーにリンクされているテーブルを持っています。サブ選択の番号がわからない場合の自己参加

+----------------+-------------------+----------+------------------------------+------------------+ 
| 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」は「自己」(主たる申請者)です。配偶者と子供(parvatiとananta)は単一の申請者とみなす必要があります。

aambu ghosha 3 
anant01011975 2 
atmaram sutar 2 

主な応募者には、その家族を含める必要があります。期待される結果は上に示されている。 これは自己参加を使って達成できると思いますが、主な申請人にリンクされている子供の数はわかりません。カウントを見つけるための最良のアプローチは何ですか?

http://sqlfiddle.com/#!9/30945c/2/0


更新:

どのように私は自己ん - メイン申請者にリンクされているアプリケーションの数に参加して更新?例えば、 2番目のレコードのNULL値は、あなたが子供のただ一つのレベルを持っていると仮定すると201708180921.

+0

を要求された結果を生成する動作しますいくつのレベルが許可されていますか?一つだけ? –

+0

はい。 1レベルのみが許可されていますが、1人の頭は複数の扶養家族を持つことができます。 – shantanuo

答えて

4

に変更する必要があり、これは

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 
関連する問題