我进行了一个查询,列出了我网站中每个俱乐部的所有球队的所有球员。
“俱乐部”有“球队”,每个球队都有“球员”,我使用以下查询解决列表:
SELECT
Club.*,
Teams.*,
Players.*
FROM
(Club LEFT JOIN Teams ON Club.idClub = Teams.idClub)
LEFT JOIN
Teams ON Teams.idEquipos_Categorias = Players.idEquipos_Categorias
WHERE
Teams.idTemporadas = 2017
效果很好,现在我只想列出其他表“hasPlay”中“已玩过”的玩家,我做了此更改,但它返回空:
SELECT
Club.*,
Teams.*,
Players.*,
HasPlay.*
FROM
((Club LEFT JOIN Teams ON Club.idClub = Teams.idClub)
LEFT JOIN
Teams ON Teams.idEquipos_Categorias = Players.idEquipos_Categorias) LEFT JOIN HasPLay ON Players.idPlayer = HasPlay.idPlayer
WHERE
Teams.idTemporadas = 2017
我想我在上次连接中搞砸了......
任何建议都会受到欢迎
最佳答案
我怀疑你原来的查询是否有效
因为它包含各种错误和异常
无论如何你应该避免无用的()
特别是在 Equipos_Categorias 表上使用 JOIN,例如:
SELECT
Club.*,
Teams.*,
Players.*,
HasPlay.*
FROM Club LEFT JOIN Teams ON Club.idClub = Teams.idClub
LEFT JOIN Teams ON Teams.idEquipos_Categorias = Players.idEquipos_Categorias
LEFT JOIN HasPLay ON Players.idPlayer = HasPlay.idPlayer
INNER JOIN Equipos_Categorias ON Teams.idEquipos_Categorias = Equipos_Categorias.idEquipos_Categorias
and Equipos_Categorias.idTemporadas = 2017
ORDER BY Club.nombre, Equipos_Categorias.idEquipos_Categorias ASC,
Jugadores_Equipos.categoriaJugador ASC, Jugadores_Equipos.nombre ASC
并由 OP uisng 团队表验证
SELECT
Club.*,
Teams.*,
Players.*,
HasPlay.*
FROM Club LEFT JOIN Teams ON Club.idClub = Teams.idClub
INNER JOIN Teams ON Teams.idEquipos_Categorias = Players.idEquipos_Categorias and team.idTemporadas = 2017
LEFT JOIN HasPLay ON Players.idPlayer = HasPlay.idPlayer
ORDER BY Club.nombre, Equipos_Categorias.idEquipos_Categorias ASC,
Jugadores_Equipos.categoriaJugador ASC, Jugadores_Equipos.nombre ASC
关于MySql Join 给我留下了一张空表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498177/