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

标签 mysql join

我想将一个表的主键连接到其他表的多个外键。 我想将表equipo_ Arbitro 中的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 个独立的 JOIN 查询的 UNION。

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;

关于mysql - 将一个表的一个字段连接到另一表的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22984890/

相关文章:

php - mysql中将两个查询合并为单个查询(一个查询的结果输入到另一个查询的表名)

mysql - SQL查询Joomla上的标签数量

php - 通过 Android Studio 使用 MySQL 数据库登录应用程序

mysql - JOIN 语句中的 SQL 问题

mysql - LEFT JOIN 创建多行、GROUP BY 或 DISTINCT

mysql - 如何在 UPDATE mysql 查询中使用 JOIN

sql - 如何在MySQL中进行FULL OUTER JOIN?

mysql - 模棱两可的left join?

sql - SQL Server连接表和数据透视

php - 无效的货币代码 - 在 woocommerce 中进入结帐页面时出错