sql - 如何向所有在餐厅举行多次会议的客户展示
问题描述
想要显示在标识符为 5 的餐厅中进行了多次会议的所有顾客
但是这个问题的结果很糟糕,因为如果客户是 client_id 2 的客户,那么不算他,如果我有 2 个来自同一张表的外键,我就有大问题
SELECT COUNT(s.id_restaurant) amount_meet, k.id_client
FROM client k JOIN meet s ON k.id_client =s.id_client1 JOIN klient kl ON kl.id_client=s.id_client2
WHERE s.id_restaurant=5
HAVING COUNT(s.id_restaurant)>1
GROUP BY k.id_client;
解决方案
为什么你不能尝试从会议表中选择并加入客户表?
SELECT COUNT(s.id_restaurant) amount_meet, k.id_client
FROM meet s
LEFT JOIN client k ON k.id_client =s.id_client1
LEFT JOIN client kl ON kl.id_client=s.id_client2
WHERE s.id_restaurant=5
HAVING COUNT(s.id_restaurant)>1
GROUP BY k.id_client;
推荐阅读
- python - 有没有办法在 GTK 中获取系统中所有已安装字体的列表
- bokeh - 散景单击 gmap 图上绘制的圆圈
- java - 如何修复在其主体中返回 null 的响应实体对象
- fortran - 尝试将非连续数组写入屏幕时,使用 coarray 标志(并启用运行时检查)编译的应用程序中止
- azure - IIS Web 部署任务正在将源代码部署到服务器
- angular - 无法改变 ionic 3 中每个组件的行为
- azure - 在 ested Azure ARM 模板中使用变量
- macos - QEMU:引导失败:EFI 硬盘
- sql - Postgres SQL中如何高效存储大量包含字符串的数据?
- bitbucket-pipelines - bitbucket 管道中的 JSON 值替换