在 MySQL 中,我有以下三个表:
|Personas |
-------------------
|dni_persona int | 1
|nombre_persona | Juan
|Empresas |
-------------------
|dni_empresa | 12345 54321
|nombre_empresa | cocaloca pipse cola
|Personas_Empresas |
--------------------
|dni_persona_a | 1 1
|dni_empresa_a | 12345 54321
如果我想获得所有人以及与他们一起工作的公司,我会这样做:
SELECT *
FROM personas_empresas as pe
LEFT JOIN personas as p ON pe.dni_persona_a = p.dni_persona
LEFT JOIN empresas as e ON pe.dni_empresa_a = e.dni_empresa
返回以下内容:
|dni_persona_a|dni_empresa_a|dni_persona|nombre_persona|dni_empresa|nombre_sa|
|1 |12345 |1 |Juan |12345 |cocaloca |
|1 |54321 |1 |Juan |54321 |pipseloca|
如何修改查询以仅获取一次 Juan 但在另一列中获取与他相关的所有公司?
要获得以下信息:
|nombre_persona|dni_empresa|nombre_empresa|
|Juan |12345 |cocaloca |
| |54321 |pipseloca |
笔记:
1)尝试使用DISTINCT
,但它返回与重复记录相同。
2) 使用 groupbynombre_persona
并且只返回一个记录示例 juan cocaloca
表的关系,你应该从
Personas
>> ,Personas_Empresa
这样Empresas
你的查询将如下:结果如下:
在这里你可以看到demostración y sus resultados.
注意: SQL 有多种风格,并且在一种风格和另一种风格之间,语法可能会发生变化,因此您需要添加您当前使用的一种标签。其中一些是 SQL Server、MySQL Oracle 等。公开的示例适用于 SQL Server,但我认为它也适用于其他数据库引擎。