mysql - 内部连接效果不佳

标签 mysql inner-join

我正在尝试从裁判(ArbPrin、ArbAux、Anotador、Crono、Op24)那里获取城镇(Localidad)。我进行了查询,但结果不正确。例如,如果我只有 ArbPrinAnotador,它会为所有裁判返回 ArbPrin 镇。如果 ArbPrin 来自马拉加,而 Anotador 来自托雷莫利诺斯,则所有裁判的结果都是马拉加。

这是查询:

SELECT L1.Nombre AS'LocPrin', L2.Nombre AS'LocAux', L3.Nombre AS'LocAn',
L4.Nombre AS'LocCro', L5.Nombre AS'LocOp' FROM PARTIDO 
    INNER JOIN EQUIPO_ARBITRAL A1 ON PARTIDO.ArbPrin=A1.Codigo_arbitro
    INNER JOIN EQUIPO_ARBITRAL A2 ON PARTIDO.ArbPrin=A2.Codigo_arbitro 
    INNER JOIN EQUIPO_ARBITRAL A3 ON PARTIDO.ArbPrin=A3.Codigo_arbitro 
    INNER JOIN EQUIPO_ARBITRAL A4 ON PARTIDO.ArbPrin=A4.Codigo_arbitro 
    INNER JOIN EQUIPO_ARBITRAL A5 ON PARTIDO.ArbPrin=A5.Codigo_arbitro
    INNER JOIN LOCALIDAD L1 ON A1.Cod_localidad=L1.Codigo_localidad
    INNER JOIN LOCALIDAD L2 ON A2.Cod_localidad=L2.Codigo_localidad
    INNER JOIN LOCALIDAD L3 ON A3.Cod_localidad=L3.Codigo_localidad
    INNER JOIN LOCALIDAD L4 ON A4.Cod_localidad=L4.Codigo_localidad
    INNER JOIN LOCALIDAD L5 ON A5.Cod_localidad=L5.Codigo_localidad;

这里是结果的一个例子。如果我有以下裁判:

ArbPrin: Malaga, ArbAux: Torremolinos, Anotador: Benalmadena

结果如下:

LocPrin    LocAux    LocAn    LocCro    LocOp
-----------------------------------------------
Malaga     Malaga    Malaga   Malaga    Malaga

我要的结果是下一个:

LocPrin    LocAux         LocAn        LocCro    LocOp
--------------------------------------------------------
Malaga   Torremolinos   Benalmadena  

最佳答案

给你,我想这就是你想要的:

SELECT L1.Nombre AS'LocPrin', L2.Nombre AS'LocAux', L3.Nombre AS'LocAn',
L4.Nombre AS'LocCro', L5.Nombre AS'LocOp' FROM PARTIDO 
    LEFT JOIN EQUIPO_ARBITRAL A1 ON PARTIDO.ArbPrin=A1.Codigo_arbitro
    LEFT JOIN EQUIPO_ARBITRAL A2 ON PARTIDO.ArbAux=A2.Codigo_arbitro 
    LEFT JOIN EQUIPO_ARBITRAL A3 ON PARTIDO.Anotador=A3.Codigo_arbitro 
    LEFT JOIN EQUIPO_ARBITRAL A4 ON PARTIDO.Crono=A4.Codigo_arbitro 
    LEFT JOIN EQUIPO_ARBITRAL A5 ON PARTIDO.Op24=A5.Codigo_arbitro
    LEFT JOIN LOCALIDAD L1 ON A1.Cod_localidad=L1.Codigo_localidad
    LEFT JOIN LOCALIDAD L2 ON A2.Cod_localidad=L2.Codigo_localidad
    LEFT JOIN LOCALIDAD L3 ON A3.Cod_localidad=L3.Codigo_localidad
    LEFT JOIN LOCALIDAD L4 ON A4.Cod_localidad=L4.Codigo_localidad
    LEFT JOIN LOCALIDAD L5 ON A5.Cod_localidad=L5.Codigo_localidad;

Demo

关于mysql - 内部连接效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358341/

相关文章:

mysqldump:出现错误:1045 访问被拒绝

mysql - 为什么下面的查询返回所有记录而不是一条?

mysql - 无法从表中获取正确的图像路径

java - Derby - java.sql.SQLException : Column 'table.column_name' not found

mysql - MariaDB 更新报错 inner join 和 select

php - mysql 匹配查询

php - 如何获取与 WordPress 博客特色图像关联的图像文本?

mysql - 如何找到层次树中的所有子节点

sql - sql引擎执行查询要遵循的步骤是什么?

sql - INNER JOIN 不返回任何结果 - SQLite