首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL语句内连接

MySQL语句内连接
EN

Stack Overflow用户
提问于 2018-03-08 20:39:34
回答 2查看 28关注 0票数 0

我有一条SQL语句

代码语言:javascript
复制
SELECT
    locales.id_c,
    locales.name_p AS NombrePropietario,
    locales.surname1 AS PrimerApellido,
    locales.local_name AS Nombre_Local,
    locales.zona AS ZonaLiga,
    locales.id_m1 AS Maquina_1,
    maquinas.tipo_m AS Tipo_de_Maquina1,
    locales.id_m2 AS Maquina_2,
    maquinas.tipo_m AS Tipo_de_Maquina2,
    locales.id_m3 AS Maquina_3,
    locales.id_m4 AS Maquina_4
FROM locales
INNER JOIN maquinas
    ON locales.id_m1 = maquinas.id_m;

在本例中,它只显示了"Maquina_1“和"Tipo_de_Maquina1”

并且需要显示"Maquina_2“和"Tipo_de_Maquina2","Maquina_3”和"Tipo_de_Maquina3“等。

有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-08 20:48:02

使用表别名多重连接maqinas表:

代码语言:javascript
复制
SELECT
  l.id_c,
  l.name_p AS NombrePropietario,
  l.surname1 AS PrimerApellido,
  l.local_name AS Nombre_Local,
  l.zona AS ZonaLiga,
  l.id_m1 AS Maquina_1,
  m1.tipo_m AS Tipo_de_Maquina1,
  l.id_m2 AS Maquina_2,
  m2.tipo_m AS Tipo_de_Maquina2,
  l.id_m3 AS Maquina_3,
  m3.tipo_m AS Tipo_de_Maquina3,
  l.id_m4 AS Maquina_4,
  m4.tipo_m AS Tipo_de_Maquina4
FROM locales l
LEFT JOIN maquinas m1 ON l.id_m1 = m1.id_m
LEFT JOIN maquinas m2 ON l.id_m2 = m2.id_m
LEFT JOIN maquinas m3 ON l.id_m3 = m3.id_m
LEFT JOIN maquinas m4 ON l.id_m4 = m4.id_m
;

我使用外部连接的情况下,记录没有maquina 1,2,3或4。如果每个记录总是有所有的maquina,你可以切换到内部连接。

无论如何,您可能想要考虑另一个数据模型,在这个数据模型中,您将添加一个表locale_maquina,并从locales表中删除单个id_m1 to id_m4。这将使选择数据变得更容易,并支持链接到某个位置的灵活数量的maquinas。

票数 1
EN

Stack Overflow用户

发布于 2018-03-08 20:45:20

您的"Tipo_de_Maquina2“是错误的,因为它将显示与"Tipo_de_Maquina1”相同的值。

您应该遵循与"Tipo_de_Maquina1“相同的INNER JOIN逻辑,以获取tipo_m的其他值。

代码语言:javascript
复制
SELECT
    locales.id_c,
    locales.name_p AS NombrePropietario,
    locales.surname1 AS PrimerApellido,
    locales.local_name AS Nombre_Local,
    locales.zona AS ZonaLiga,
    locales.id_m1 AS Maquina_1,
    m1.tipo_m AS Tipo_de_Maquina1,
    locales.id_m2 AS Maquina_2,
    m2.tipo_m AS Tipo_de_Maquina3,
    locales.id_m3 AS Maquina_3,
    m3.tipo_m AS Tipo_de_Maquina4,
    locales.id_m4 AS Maquina_4,
    m4.tipo_m AS Tipo_de_Maquina4
FROM locales
INNER JOIN maquinas AS m1
    ON locales.id_m1 = m1.id_m
INNER JOIN maquinas AS m2
    ON locales.id_m2 = m2.id_m
INNER JOIN maquinas AS m3
    ON locales.id_m3 = m3.id_m
INNER JOIN maquinas AS m4
    ON locales.id_m4 = m4.id_m;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49173323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档