MySql Join给我留下了一张空桌子

时间:2017-11-26 16:09:09

标签: mysql sql join

我做了一个查询,列出了我网站上每个俱乐部所有球队的所有球员。

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

我想我在最后一次加入时搞砸了......

任何建议都得到了很好的回复

1 个答案:

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