只是为了扩展我的上一期 - 我的数据库中有两个表,我想提取某些信息。下表:
(player): player_id (primary), playerName
(match): match_id (primary), playerID1, playerID2, playerID3, scorer etc..
您向我提供了以下代码来获取玩家姓名:
SELECT p.Name
FROM `match` m
INNER JOIN `player` p
ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc
效果很好,谢谢 - 我只想做两个调整:
- 我想返回得分手的姓名以及球员的姓名。由于 m.scorer 是一个 ID,如果 p.Name 已映射到 m.playerID,如何将其映射到 p.Name 属性?
- 上面的查询返回所有玩家的姓名。我很快就会添加一个搜索功能,您可以在其中搜索某个球员的所有比赛。无论如何,是否可以将该球员从结果中排除(因为我们已经知道该球员在被搜索时就在比赛中)。因此,几乎会返回所有比赛以及某个玩家的其他玩家,但从结果中排除实际搜索到的玩家。抱歉,如果不清楚,请告诉我,我会详细说明。
尝试类似以下内容(假设字段名称)。它会向您显示球员的姓名、比赛的 matchId 以及他们是否在那场比赛中得分:)。
SELECT p.Name as 'Player Name', m.matchId as 'Match Id',
CASE s.scorerId WHEN ISNULL(S.SCORERID,0) THEN 'YES' ELSE 'NO' END as 'Scored?',
s.name as 'Scorer Name' --as requested from comment
FROM match m
INNER JOIN player p ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3)
LEFT JOIN scorer s ON s.matchId = m.matchId
AND s.player_id IN (m.playerID1, m.playerID2, m.playerID3)
请参阅此 SQLFiddleHERE http://sqlfiddle.com/#!3/35fb2/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)