2013-10-14 86 views
1

我正在構建一個新的Web應用程序,並對sql查詢有了基本的瞭解,但我被困在這個特定的查詢中。SQL子查詢或內部連接?

這些是我將使用此查詢的兩個表。第一個表中的「followingID」指向第二個表的「id」。

dbo.T_FOLLOWING_GROUP 
-id 
-groupLookupID 
-followingID 
-order 

dbo.FOLLOWING 
-id 
-userID 
-followingID 

我需要根據我有「用戶ID」和「groupLookupID」的已知值在dbo.FOLLOWING所有行。

這是足夠的信息去掉?我知道有這樣

`SELECT * FROM dbo.FOLLOWING 
WHERE (insert select subquery here)` 

還是有某種inner join我需要使用的方法嗎?

+0

你究竟卡在哪一部分?這將根據對sql *的基本理解。 – Khan

+0

我被困在如何使其成爲一個查詢。根據我目前的知識,我將分成兩個不同的查詢 –

+0

如果您「需要根據已知的」userID「和」groupLookupID「獲取dbo.FOLLOWING中的所有行,請問dbo.T_FOLLOWING_GROUP與此有關嗎? –

回答

1

INNER JOIN

SELECT AnyTableName.AnyColumnName1, AnyTableName.AnyColumnName2, ..... --- out these two tables 
    FROM dbo.T_FOLLOWING_GROUP INNER JOIN dbo.FOLLOWING 
    ON dbo.T_FOLLOWING_GROUP.followingID = dbo.FOLLOWING.id 

然後你就可以添加WHERE到底子句futher篩選結果集

查詢

SELECT Column1, Column2, Column3, ........... 
FROM dbo.T_FOLLOWING_GROUP 
WHERE followingID IN (
         SELECT DISTINCT id FROM dbo.FOLLOWING 
        ) 
0

讓所有的一個查詢(使用連接)試試這個:

SELECT f.* 
FROM dbo.FOLLOWING f 
LEFT JOIN dbo.T_FOLLOWING_GROUP fg on (f.id=fg.followingID) 
WHERE f.userID=xxx AND fg.groupLookupID=yyy 

(使用您已知的值代替xxx和yyy)。

+0

你爲什麼建議外連接? –

+0

如果我們正在查找FOLLOWING表中沒有對應的FOLLOWING_GROUP行的特定行,該怎麼辦?這只是作者必須使用的一個問題示例(並將其調整爲自己的用例) – promanski