我有以下表格:MySQL的左连接使用单行
mysql> select * from `empresas`;
+----+-------+-----------+-------+------------+----------------+
| id | tipo | logotipo | nome | grupo | cnpj |
+----+-------+-----------+-------+------------+----------------+
| 8 | Lazer | troll.jpg | Teste | Pespi Cola | 99999313412312 |
+----+-------+-----------+-------+------------+----------------+
mysql> select * from `empresas_contatos`;
+----+---------+------------+--------------+------------+
| id | empresa | rotulo | email | telefone |
+----+---------+------------+--------------+------------+
| 1 | 8 | Principal | [email protected] | 5112121212 |
| 2 | 8 | Financeiro | [email protected] | 5012121212 |
+----+---------+------------+--------------+------------+
我想使用左连接两者,这样的:
mysql> select `e`.`nome`, `e`.`grupo`, `c`.* from `empresas` `e`
-> left join `empresas_contatos` `c` on
-> `c` . `empresa` = `e` . `id`;
+-------+------------+------+---------+------------+-------------+------------+
| nome | grupo | id | empresa | rotulo | email | telefone |
+-------+------------+------+---------+------------+-------------+------------+
| Teste | Pespi Cola | 1 | 8 | Principal | [email protected] | 5112121212 |
| Teste | Pespi Cola | 2 | 8 | Financeiro | [email protected] | 5012121212 |
+-------+------------+------+---------+------------+-------------+------------+
的问题是,在这样的查询重复empresas
字段,如grupo
,nome
(真实表格比示例更大!)。
我想知道如何在一行中接收所有数据。结果应该是类似的东西:
+-------+------------+------+---------+------------+-------------+------------+-------------+------------+
| nome | grupo | id | empresa | rotulo | email1 | telefone1 | email2 | telefone2 |
+-------+------------+------+---------+------------+-------------+------------+-------------+------------+
| Teste | Pespi Cola | 1 | 8 | Principal | [email protected] | 5112121212 | [email protected] | 5012121212 |
+-------+------------+------+---------+------------+-------------+------------+-------------+------------+
,如果有第三empresas_contatos
行,查询将返回email3
,telefone3
...
我可以使用GROUP_CONCAT(),但我很好奇为此寻找解决方案。
在此先感谢!
太棒了!非常感谢你!我根据你的回复做了这个:http://sqlfiddle.com/#!2/b8c4a/2 但是我不是100%满意,因为这个查询需要大量的复制和粘贴,嘿嘿。我会尽力改善您的查询以使其更“自动化”,但我真的很感谢您的回答。谢谢! – 2013-02-12 01:42:45
@MatheusTavares - np,很高兴我能帮上忙。 MySQL中的数据透视表比其他RDBMS稍微困难一些。祝你好运。 – sgeddes 2013-02-12 01:45:07