SQL查询似乎没有正确连接

时间:2013-04-10 17:45:02

标签: mysql

我有两张桌子:equipos有足球队的名字,calendario有比赛(jornadas)。我需要得到jornada 1的比赛。

实施例: 皇马 - 巴塞罗那

这是我的问题:

SELECT NOMBRE, NOMBRE FROM EQUIPOS 
LEFT JOIN CALENDARIO ON EQUIPOS.ID=CALENDARIO.ID_LOCAL 
    AND EQUIPOS.ID=CALENDARIO.ID_VISITANTE
WHERE JORNADA=1;

第一个表是CALENDARIO,第二个表是EQUIPOS

Calendario

Equipos

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

SELECT local.Nombre, visitante.Nombre
FROM calendario
LEFT JOIN EQUIPO local ON calendario.ID_LOCAL = local.ID
LEFT JOIN EQUIPO visitante ON calendario.ID_LOCAL = visitante.ID
WHERE JORNADA = 1

还有你的另一个问题:

  

完美。如果我有另一个名为ARBITROS的表,其字段为:ID   和NAME,我想在每场比赛中得到仲裁的名字吗?

有查询:

SELECT local.Nombre, visitante.Nombre, arbitros.Name 
FROM calendario 
LEFT JOIN EQUIPO local ON calendario.ID_LOCAL = local.ID 
LEFT JOIN EQUIPO visitante ON calendario.ID_LOCAL = visitante.ID 
LEFT JOIN arbitros arbitros ON calendario.ID_arbitros = arbitros.ID 
WHERE JORNADA = 1

答案 1 :(得分:1)

您需要与表EQUIPOS进行两次连接(并且它们可能不需要连接)。

SELECT EQUIPO_LOCAL.NOMBRE AS LOCAL, EQUIPO_VISITANTE.NOMBRE AS VISITANTE
FROM CALENDARIO
JOIN EQUIPOS AS EQUIPO_LOCAL ON CALENDARIO.ID_LOCAL = EQUIPO_LOCAL.ID
JOIN EQUIPOS AS EQUIPO_VISITANTE ON CALENDARIO.ID_VISITANTE = EQUIPO_VISITANTE.ID
WHERE JORNADA=1;

答案 2 :(得分:1)

SELECT NOMBRE, NOMBRE FROM EQUIPOS LEFT JOIN CALENDARIO
ON EQUIPOS.ID=CALENDARIO.ID_LOCAL AND EQUIPOS.ID=CALENDARIO.ID_VISITANTE
WHERE JORNADA=1;

你的ON条件是不可能的,因为你的本地团队不能与访客团队相同......你需要加入团队表的2倍才能在分离的表上做条件