2012-02-07 109 views
2

我有3个表A,B和C.我想获取每个id的子ID和文本。我也想知道如果id有一些eId链接到它。SQL DISTINCT INNER JOIN和LEFT JOIN和.NET C#PrimaryKey

我用INNER对A和B,然后离开JOIN'd,到目前为止,与TABEL C.我的SQL字符串结果JOIN是:

SELECT DISTINCT A.id,A.subId, B.text, C.eId 
FROM A 
INNER JOIN B ON A.id=B.id 
LEFT JOIN C ON A.id=C.id 
WHERE B.text='something' 

的问题是,C.eId有多个条目为每个ID。所以我得到的输出是这样的:

================================= 
    id | subId | text | eId 
    1  e12  etc  
    2  e12  etc  
    2  t23  etc  p1111 
    3  e12  etc  
    4  e12  etc  p1234 
    4  e12  etc  p4325 

我想删除喜欢最后一个(“4 E12等p4325”)的线,因为我已经知道4,E12具有连接到它的一些其他的开斋节。我需要id和subId作为PrimaryKeys。

我该怎么做? DISTINCT一直工作,直到我将多个ID添加到eId。

编辑:我使用MSSQL,如果这有所作为。

回答

1

如果是这样工作的我不记得,试试吧,告诉我:

SELECT DISTINCT A.id,A.subId, B.text, 
(select top 1 C.eId from C where C.id = A.id) AS eId 
FROM A 
INNER JOIN B ON A.id=B.id 
WHERE B.text='etc' 
+0

不幸的是,事实并非如此。 – Trafz 2012-02-07 10:52:16

+0

@ JoenJ.Olsen再试一次。如果有效,请不要忘记[投票](http://stackoverflow.com/privileges/vote-up)和[接受答案](http://meta.stackexchange.com/questions/5234/how -does接受-的回答工作)。 – 2012-02-07 11:04:44

+0

它工作,如果我删除了#A,#B和#C。谢谢! :)我会回来,当我得到15的声望投票你:) – Trafz 2012-02-07 11:09:31