gpt4 book ai didi

mysql - 如何在mysql主表的单个查询中连接关系表中的值

转载 作者:行者123 更新时间:2023-11-29 10:51:02 25 4
gpt4 key购买 nike

我有三张 table 。第一张是包含客户数据的主表,一张是业务类型列表,第三张是客户 ID 与所有关联业务的关系。

客户表,即客户:

id | client   | address  | phone   
----------------------------------
1 | John Doe | Address1 | Phone 1
2 | Jane Doe | Address2 | Phone 2
3 | Jack Doe | Address3 | Phone 3

企业类型表,即企业:

id | business
-----------------
1 | Electrician
2 | Plumber
3 | Home remodel
4 | Bathrooms

还有关系表,说明哪个客户与哪个业务关联,即Relations:

c_id | b_id
-----------
1 | 3
1 | 4
2 | 2
2 | 4
3 | 1
3 | 2
3 | 4

我只需要在一行中为每个客户选择串联的公司名称,如下所示:

结果:

id | client   | address  | phone   | business
--------------------------------------------------------------------
1 | John Doe | Address1 | Phone 1 | Home remodel, Bathrooms
2 | Jane Doe | Address2 | Phone 2 | Plumber, Bathrooms
3 | Jack Doe | Address3 | Phone 3 | Electrician, Plumber, Bathrooms

通过单个查询可以实现这一点吗?我尝试了很多 concat 和 group_concat 方法但没有成功。我真的很感激任何想法。

最佳答案

是的。使用外连接,并使用 GROUP_CONCATGROUP BY 子句进行聚合。

类似这样的事情:

SELECT c.id
, c.client
, c.address
, c.phone
, GROUP_CONCAT(b.business ORDER BY b.id) AS business
FROM `Clients` c
LEFT
JOIN `Relations` r
ON r.c_id = c.id
LEFT
JOIN `Businesses` b
ON b.id = r.b_id
GROUP
BY c.id
, c.client
, c.address
, c.phone

关于mysql - 如何在mysql主表的单个查询中连接关系表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com