2011-04-30 55 views
0

我有三個表格:user,friend_recommendation和movie。 我想獲得推薦這部電影給我的人的名字,以及電影表中的電影信息和friend_recommendation表中的評論。我該怎麼做呢?如何使用單個查詢查詢多個表格

假設用戶表具有名稱作爲屬性,電影表具有電影標題作爲屬性,並且friend_recommendation具有UID(推薦用戶),FID(推薦用戶)和COMMENT(什麼是來自UID的評論FID)

它甚至可以在一個查詢中做到這一點?

+0

我認爲你還需要friend_recommendation表中的電影參考 – Dalen 2011-04-30 22:22:56

+0

而用戶表需要一個'id'字段,而不僅僅是'name',但除此之外你似乎需要'加入'所有三個表並給出一個合適的WHERE條款。 – 2011-04-30 22:23:37

回答

2

所以三個表,基本上是與這些字段(大大簡化):

users (userId, name) 
movies (movieId, movieInfo) 
recommendations (fromUserId, toUserId, movieId, comment) 

SELECT fromUser.name, toUser.name, m.movieInfo, r.comment 
FROM recommendations r 
INNER JOIN movies m ON m.movieId = r.movieId 
INNER JOIN users fromUser ON r.fromUserId = fromUser.userId 
INNER JOIN users toUser ON r.toUserId = toUser.userId 
WHERE r.toUserId = << my user id, or whatever your criteria are >> 

編輯迴應下面的評論:另外檢索名/用戶的詳細信息,電影推薦就像再次加入用戶表一樣簡單。您可以在JOIN中看到我們從users中選擇了兩次。

+0

真棒..從0-10的速率你覺得這個查詢有多複雜? – alexander 2011-04-30 22:35:16

+0

@alexander:我會給它10分之2 ...爲什麼? – nickf 2011-04-30 22:37:56

+0

如果我需要推薦人和推薦人的名字,該怎麼辦?我認爲它改變了整個事情? – alexander 2011-04-30 22:38:24