2013-04-10 50 views
1

我有兩個表:equipos與橄欖球隊的名字和calendario與匹配(jornadas)。我需要得到的Jornada的比賽1.SQL查詢似乎沒有正確連接

例子: 皇家馬德里 - 巴塞羅那

這裏是我的查詢:

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

+0

檢查您的加入條件是否準確。您當前的聯接要求ID_Local和ID_Visitante是相同的,這從來都不是真的。 – 2013-04-10 17:55:11

回答

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,我想在每場比賽中得到arbitros的名字?

有查詢:

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 
+0

完美。如果我有另外一張名爲ARBITROS的表,裏面有ID和NAME字段,我想在每一場比賽中都能得到arbitros的名字? – jal 2013-04-10 18:28:29

+0

@halfer完成;) – forumma 2013-04-22 00:25:50

+0

太好了,謝謝。這並不重要,但我傾向於刪除後續的評論,以消除混亂。 – halfer 2013-04-22 08:52:32

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; 
1
SELECT NOMBRE, NOMBRE FROM EQUIPOS LEFT JOIN CALENDARIO 
ON EQUIPOS.ID=CALENDARIO.ID_LOCAL AND EQUIPOS.ID=CALENDARIO.ID_VISITANTE 
WHERE JORNADA=1; 

您的情況是不可能的,因爲的與您的本地團隊不能一樣客隊......你需要加入2次球隊表才能完成分離表上的條件