我需要帮助正确编写MySQL查询

时间:2010-09-11 17:11:36

标签: mysql

我想提出一个游戏目录,但我也想知道游戏是否已经在 SPECIFIC 成员(当前会员中)会员列表中。此信息存储在名为gameslist的表中,该表是一个连接成员和游戏的木匠表gameslists(id,memberid,gameid,rank)

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 个答案:

答案 0 :(得分:2)

在您的外连接条件中,输入感兴趣的特定成员的memberid。

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

然后,您可以测试gameslists.memberid是否为空,然后游戏不在其列表中。

e.g。

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