2013-02-28 43 views
0

這裏的第一次出現是我的表:表(訪問)項

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 

我的第二個查詢,QUERY2

SELECT TOP 1 name, family_id 
FROM families 
WHERE family_id IN (SELECT family_id FROM query1) AND isparent=0 
ORDER BY id; 

其中th e不希望的結果:

NAME  FAMILY_ID 
--------------------- 
Bill  1 

因爲top 1不會從每個子結果中取出top 1,但總體上較小的entry id。

我確定我錯過了一些東西,並有一個簡單的方法來實現這一點,但我無法弄清楚如何。

在此先感謝您的幫助

+0

是否使用在直通模式到SQL Server的訪問?如果是這樣,SQL Server的版本是什麼? – Andomar 2013-02-28 12:26:17

+0

只是沒有別的訪問 – MIrrorMirror 2013-02-28 12:28:37

回答

1
select * 
from YourTable 
where id in 
     (
     select min(id) 
     from YourTable 
     where isparent = 0 
     group by 
       family_id 
     )