这是我的工作查询:
SELECT
d.*, g.name game,
(SELECT GROUP_CONCAT(p.name) FROM shows_players p
LEFT JOIN (SELECT * FROM shows_map) sm ON sm.player_id = p.id
WHERE sm.show_id = d.id AND sm.game_id = g.id) players
FROM shows_dates d
LEFT JOIN (SELECT * FROM shows_map
WHERE player_id = 5 GROUP BY show_id, game_id) m ON d.id = m.show_id
LEFT JOIN shows_games g ON g.id = m.game_id
在添加“WHERE player_id =”行之前,这是一个很好的查询。然后它返回一些没有数据的行。我该如何清理它并摆脱它们?
谢谢
答案 0 :(得分:1)
一个简单的解决方案可能是将LEFT JOIN (SELECT * FROM shows_map
更改为INNER JOIN (SELECT * FROM shows_map
。
我想你得到了一些空的NULL数据,因为你正在使用LEFT JOIN。
你的查询非常混乱。