Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将一个表的一个字段连接到另一个表的多个字段_Mysql_Join - Fatal编程技术网

Mysql 将一个表的一个字段连接到另一个表的多个字段

Mysql 将一个表的一个字段连接到另一个表的多个字段,mysql,join,Mysql,Join,我想将一个表的主键连接到另一个表的多个外键。 我想加入equipo_仲裁表中的codigo_arbitro和partido表中的anotador、crono和op24。 如果我只加入anotador字段,这没有问题,但是当我尝试加入另一个字段时,Mysql抛出错误not unique table alias p。 这是我试过的密码 SELECT Codigo_arbitro, Hora, PABELLON.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITR

我想将一个表的主键连接到另一个表的多个外键。 我想加入equipo_仲裁表中的codigo_arbitro和partido表中的anotador、crono和op24。 如果我只加入anotador字段,这没有问题,但是当我尝试加入另一个字段时,Mysql抛出错误not unique table alias p。 这是我试过的密码

SELECT Codigo_arbitro, Hora, PABELLON.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITRAL
        INNER JOIN PARTIDO P ON EQUIPO_ARBITRAL.Codigo_arbitro=P.Anotador
        INNER JOIN PARTIDO P ON EQUIPO_ARBITRAL.Codigo_arbitro=P.Crono
        INNER JOIN PARTIDO P ON EQUIPO_ARBITRAL.Codigo_arbitro=P.Op24
这是桌子的结构

CREATE TABLE EQUIPO_ARBITRAL(Codigo_arbitro INT NOT NULL AUTO_INCREMENT, 
Licencia     VARCHAR(4), Nombre VARCHAR(20), Apellidos VARCHAR(20), 
Email VARCHAR(20), Telefono1 INT(9), Telefono2 INT(9), Cuenta INT(20), 
Cod_localidad INT(3), PRIMARY KEY (Codigo_arbitro));

CREATE TABLE PARTIDO(Codigo_Partido INT NOT NULL AUTO_INCREMENT PRIMARY KEY, EquipoA INT NOT NULL, EquipoB INT NOT NULL, Fecha DATE,
Hora TIME, Codigo_pabellon INT NOT NULL, Codigo_categoria INT NOT NULL, Tipo VARCHAR(10), Jornada INT NOT NULL, ArbPrin INT,  ArbAux INT, Anotador INT, Crono INT, Op24 INT,
FOREIGN KEY (EquipoA) REFERENCES EQUIPO (Codigo_equipo), FOREIGN KEY (EquipoB) REFERENCES EQUIPO (Codigo_equipo), FOREIGN KEY (Codigo_categoria) REFERENCES CATEGORIA (Codigo_Categoria),
FOREIGN KEY (ArbPrin) REFERENCES EQUIPO_ARBITRAL (Codigo_arbitro), FOREIGN KEY (ArbAux) REFERENCES EQUIPO_ARBITRAL(Codigo_arbitro),
FOREIGN KEY (Anotador) REFERENCES EQUIPO_ARBITRAL (Codigo_arbitro), FOREIGN KEY (Crono) REFERENCES EQUIPO_ARBITRAL (Codigo_arbitro), FOREIGN KEY (Op24) REFERENCES EQUIPO_ARBITRAL (Codigo_arbitro),
FOREIGN KEY (Codigo_pabellon) REFERENCES PABELLON (Codigo_pabellon));
有表partidos的数据

 Hora,     ArbPrin, ArbAux, Anotador, Crono, Op24
'17:30:00',  '5',    '81',    '86',   '78', '87',
结果如下:

Codigo_arbitro   Hora
       5         17:30
      81         17:30
      86         17:30
      78         17:30
      87         17:30

每个联接表都应该有一个单独的别名,即使它是同一个表。 另外,根据问题的描述,您需要一个由3个单独的联接查询组成的并集

SELECT Codigo_arbitro, Hora, PABELLON.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITRAL
        INNER JOIN PARTIDO P1 ON EQUIPO_ARBITRAL.Codigo_arbitro=P1.Anotador
        UNION
SELECT Codigo_arbitro, Hora, PABELLON.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITRAL
        INNER JOIN PARTIDO P2 ON EQUIPO_ARBITRAL.Codigo_arbitro=P2.Crono
        UNION
SELECT Codigo_arbitro, Hora, PABELLON.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITRAL
        INNER JOIN PARTIDO P3 ON EQUIPO_ARBITRAL.Codigo_arbitro=P3.Op24;

您应该在
alias
表上显示如下内容:

P1,P2,P3

您应该更改并提及别名:

  SELECT 
  Codigo_arbitro,                         --- alias table name 
  Hora,                                   --- alias table name
  PABELLON.Codigo_localidad AS 'Loca' 
  FROM EQUIPO_ARBITRAL
  INNER JOIN PARTIDO P1 
  ON EQUIPO_ARBITRAL.Codigo_arbitro=P1.Anotador
  INNER JOIN PARTIDO P2 
  ON EQUIPO_ARBITRAL.Codigo_arbitro=P2.Crono
  INNER JOIN PARTIDO P3 
  ON EQUIPO_ARBITRAL.Codigo_arbitro=P3.Op24

您的
不起作用
,因为您不应该在列名之前的中提到
表别名
,您必须更改您的查询,例如:
table1.coulumnname
我不明白。你的答案和我的一模一样。我试过了,但不起作用。现在我没有任何错误,但是查询没有显示任何内容。它将显示3个结果,即我在表中插入的3个结果。如果您可以粘贴表详细信息ID,则您知道结果的外观,如果您知道粘贴结果。显然你不需要连接所有这些表,你需要一个连接的联合。@Ashalynd,因为他没有发布所有的细节,只发布一点点细节,所以我只是改变他的查询粘贴你的表细节我删除了另一篇文章。很抱歉