2012-02-07 120 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