2011-09-09 157 views
0

我在創建查詢時遇到了麻煩,這在我的腦海中應該很簡單。SQL Server - 從兩個表獲取信息

我有兩個表(tblReviewstblRating)。這兩個表格都有venueIduserId

我想創建一個查詢,將使用相同的venueIduserId返回審閱和評級。這是可能的,或者我應該使用兩個查詢?

在此先感謝

回答

0

可以

  1. 加入使用這些字段兩個表;
  2. ..或者(選擇第一)UNION(SELECT第二)
+0

我試過這兩種方法。工會沒有工作(我認爲),因爲這兩種數據類型不一樣。由於每個表格中並不總是數據,所以連接不起作用。 – twsJames

+0

然後使用交叉連接。 – Gedrox

0
SELECT * 
FROM tblReviews AS rev INNER JOIN 
    tblRating AS rat ON rev.venueid = rat.venueid AND rev.userid = rat.userid 

該查詢返回從每個表中的匹配的行。如果您想要第一個,第二個或兩個表中的所有記錄,則可以使用外部聯接(LEFT OUTER JOIN,RIGHT OUTER JOIN,還有FULL OUTER JOIN)。

5
SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId; 

如果你希望所有的特定用戶:

SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId 
    WHERE (Rev.UserId = @UserId OR Rat.UserId = @UserId); 

如果你希望所有的特定地點:

SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId 
    WHERE (Rev.VenueId = @VenueId OR Rat.VenueId = @VenueId); 
+0

另外,如果某個場景/用戶組合中的任何一張表中有多個記錄,該怎麼辦? – JohnFx

+0

對,在這種簡單的情況下,你會得到兩行 - 一方將在兩行中具有相同的數據。 –

+0

每個表中只會有一條記錄,無論這兩個表是否有結果,我都希望得到結果,這兩個表都沒有結果,或者只有一個表有結果 – twsJames

0

我不知道你問這個。
Try:

SELECT re.venueId, re.userId, re.review, ra.rating 
FROM tblReviews re INNER JOIN tblRating ra 
ON re.venueId = ra.venueId AND re.userId = ra.userId 
相關問題