2010-09-11 53 views
1

我想拉起一個遊戲目錄,但我也想知道遊戲是否已經在成員的(當前成員在會話中)列表中。該信息被存儲在一個名爲gameslist表,這是喬伊納成員和遊戲gameslists(id,memberid,gameid,rank)我需要幫助正確寫一個MySQL查詢

SELECT DISTINCT *, gameslists.memberid 
FROM games 
INNER JOIN platforms ON games.platformid = platforms.id 
INNER JOIN titles ON games.titleid = titles.id 
INNER JOIN genres ON games.genreid = genres.id 
LEFT OUTER JOIN gameslists ON games.id = gameslists.gameid 
WHERE platforms.id = 1 
ORDER BY games.releasedate DESC 
LIMIT 8 

問題如果一個遊戲中兩個成員的名單,它顯示了一個木匠表的兩倍,如果它在三個列表,顯示三次,等等......結果是,我可以判斷遊戲是否在當前用戶的列表中,但是通過兩次顯示相同的遊戲而使目錄顯示消失(因爲它在遊戲列表中被發現兩次)

http://i82.photobucket.com/albums/j277/melhusseini/Capture2.png

我該如何解決這個問題?

編輯:查詢的主要顯示標準應該由目錄參數(流派,發佈,日期等...)確定,如果遊戲已經在成員的列表中或不... ...的目的該部分將顯示基於該狀態的添加/刪除按鈕

+1

您想知道它是否在任何成員列表或特定成員的列表中? – 2010-09-11 17:15:32

+0

特定的memerb的列表。但是,如果遊戲已經存在於成員列表中,則主要顯示標準應該由目錄參數(流派,發佈,日期等等)來決定......基於顯示添加/刪除按鈕的目的在那個狀態 – Mohamad 2010-09-11 17:16:04

回答

2

在您的外部聯接條件中放置感興趣的特定成員的成員ID。

LEFT OUTER JOIN gameslists ON 
    games.id = gameslists.gameid and gameslists.memberid = 1 

然後,您可以測試gameslists.memberid如果它爲null,則比賽並不在他們的名單。

例如

case when gameslists.memberid is null then 0 else 1 end as InMembersList 
+0

謝謝,這真棒! – Mohamad 2010-09-11 17:31:44