mysql - 在 MySQL 中对 3 个表使用内连接,计算单个表中出现的值
问题描述
我正在尝试在 MySQL 中加入 3 个表。
SELECT location_details.location_name, count(click_details.click_id)
FROM location_details
INNER JOIN hotel_details ON hotel_details.location_id =
location_details.location_id
INNER JOIN click_details ON click_details.hotel_id = hotel_details.hotel_id
我想根据来自该位置的点击次数收集每个位置的出现次数。
相反,我最终得到了一个值,在这种情况下是“伦敦”,所有点击都归因于它,显然情况并非如此。
以下是我的数据库的架构:
click_details
click_id STRING
click_timestamp TIMESTAMP
hotel_id STRING
partner_id STRING
session_id STRING
hotel_details
hotel_id STRING
hotel_name STRING
hotel_star INTEGER
location_id STRING
location_details
location_id STRING
location_name STRING
country_id STRING
任何帮助将非常感激!:)
非常感谢你。
解决方案
你错过了group by
. 我建议对查询进行一些其他更改:
SELECT l.location_name, COUNT(c.click_id)
FROM location_details l INNER JOIN
hotel_details h
ON h.location_id = l.location_id INNER JOIN
click_details c
ON c.hotel_id = h.hotel_id
GROUP BY l.location_name
ORDER BY COUNT(c.click_id) DESC;
注意表别名的使用。这些使查询更易于编写和阅读。
在几乎任何数据库中——包括具有默认设置的最新版本的 MySQL——你的查询都会产生错误,因为你有COUNT()
一个未聚合的列在SELECT
, 没有GROUP BY
.
推荐阅读
- jquery - 有没有办法让 jQuery 中只有一个函数处理所有 HTML 按钮?
- excel - 将新数据添加到 excel 列时如何更新 ComboBox 列表?
- flutter - 不确定如何编写 Flutter 测试来测试私有方法(测试 Flutter 的存储库)
- python - 过滤嵌套模型的查询集
- amazon-web-services - 如何跨资源类型将 AWS IP 列入白名单
- ios - 如果我有 JWPlayerController 的实例,如何找出当前正在播放的文件
- python - 如何从一个元组中提取一个值?
- ruby-on-rails - Rails 控制器使用 'after_create' 方法表现得很奇怪。- 'nil:NilClass'的'未定义方法'错误'
- html - 如何在 div 的边框上添加标签并使其具有响应性?
- android - 从哪里开始服务中的线程?