我做了一个查询,列出了我网站上每个俱乐部所有球队的所有球员。
A"俱乐部"有"团队"并且每个团队都有#34;玩家",我使用此查询解决了列表:
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
它的效果非常好,现在我只想列出比#34;已经玩过的玩家#34;从其他表" 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
我想我在最后一次加入时搞砸了......
任何建议都得到了很好的回复
答案 0 :(得分:0)
我怀疑您的原始查询是否有效
因为它包含各种错误和异常
无论如何你应该避免无用()
特别是在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