ここに私のテーブルがあります:
ID NAME FAMILY_ID HASKIDS ISPARENT
--------------------------------------------------------
1 John 1 1 1
2 Bill 1 1 0
3 Dick 1 1 0
4 Jane 2 1 1
5 Mary 2 1 0
6 Pete 3 0 1
7 Jess 3 0 1
そして、私は結果が欲しい
NAME FAMILY_ID
---------------------
Bill 1
Mary 2
ロジックは次のとおりです。子供がいる各家族から、最初に生まれた名前(親以外の各メンバーの最高ID)と対応する家族IDを表示します。
ここに私の最初のクエリ、query1があります:
SELECT DISTINCT family_id
FROM families
WHERE (haskids=1)
ORDER BY family_id;
これは結果として(正しく)もたらします:
1
2
私の2番目のクエリは、query2です:
SELECT TOP 1 name, family_id
FROM families
WHERE family_id IN (SELECT family_id FROM query1) AND isparent=0
ORDER BY id;
これは望ましくない結果をもたらします:
NAME FAMILY_ID
---------------------
Bill 1
トップ 1 は各サブ結果からトップ 1 をもたらすのではなく、全体的な小さいエントリ ID をもたらすためです。
私は何かが欠けていると確信しており、これを達成する簡単な方法がありますが、その方法がわかりません。
あなたの助けを前もって感謝します