gpt4 book ai didi

mysql - SQL:如何获取表的列表对

转载 作者:行者123 更新时间:2023-11-29 04:33:07 24 4
gpt4 key购买 nike

需求:列出经常光顾同一酒吧的顾客对(即列出可能在咖啡吧相遇的所有顾客对)

酒吧 table :

-------------------------
id| name
-------------------------
1 | Vivamus nibh
2 | odio tristique
3 | vulputate ullamcorper
4 | Cras lorem
5 | libero est,

客户表:

-----------------------
id| name
-----------------------
1 | Warren
2 | Olympia
3 | Logan
4 | Summer
5 | Kamal
6 | Fernandez

频率表:

-----------------
cust_id | bar_id
-----------------
1 | 1
2 | 1
3 | 2
4 | 2
5 | 3
6 | 4

预期输出:

---------------------------------------
customer1 | customer2 | barname
---------------------------------------
Warren | Olympia | Vivamus nibh
Logan | Summer | odio tristique

这是我的尝试,但没有成功:

select c1.name, c2.name, b1.name, b2.name
from frequents f1, frequents f2
join bar b1 on f1.bar_id = b1.id
join bar b2 on f2.bar_id = b2.id
join customer c1 on f1.cust_id = c1.id
join customer c2 on f2.cust_id = c2.id
where f1.bar_id = f2.bar_id;

最佳答案

您可以将酒吧表与频繁表连接两次,然后继续连接以获取客户姓名。为了防止重复,您可以任意决定一个 cust_id 应小于另一个:

SELECT b.name, c1.name, c2.name
FROM bar b
JOIN frequents f1 ON f1.bar_id = b.id
JOIN frequents f2 ON f2.bar_id = b.id AND f1.cust_id < f2.cust_id
JOIN customer c1 ON c1.id = f1.cust_id
JOIN customer c2 ON c2.id = f2.cust_id

<强> DBFiddle

关于mysql - SQL:如何获取表的列表对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53569127/

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