2010-09-11 52 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