mysql - MySql 查询从两个表中获取结果
问题描述
我想从零售商表中获取总零售商,并从访问信息表中获取其他属性。此查询为总零售商和访问过的零售商提供了正确的结果,但为反馈计数、承诺订单计数等两列提供了不正确的结果。
select count(distinctrow tbl_retailer.retailer_id) as total_retailers,count(distinctrow tbl_visit_info.retailer_id) as visited_retailers,
SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
from tbl_visit_info,tbl_retailer
where visitor_id=175 and tbl_retailer.sr_id=175;
解决方案
有两个子查询,每个表一个。JOIN
结果。
select * from
(select sr_id, count(distinctrow retailer_id) as total_retailers
from tbl_retailer
group by sr_id) tr
join
(select visitor_id,
count(distinctrow retailer_id) as visited_retailers,
SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
from tbl_visit_info
group by visitor_id) tvi
on tvi.visitor_id = tr.sr_id
where tvi.visitor_id = 175
只需删除该WHERE
子句即可获取有关所有访问者的信息!
顺便说一句,distinctrow
这里可能不需要。
推荐阅读
- github - 带有 github v4 graphql 端点的 OAuth2 密钥/秘密
- c# - 我怎样才能持有一个弱引用
到实例的方法,直到实例被收集? - swift - 设置scnnode展示位置
- php - htaccess 文件将 /stringa 重定向到 /index.php?action=stringb
- javascript - 如何使用 id 获取多个复选框值
- python - 如何在张量流中实现随机池化,在每个滑动窗口中获取随机像素
- python-3.x - 获取列表中的一组数字,其总和与给定的所需数字匹配
- python - 插值标准函数 python, func(10,16,2) -> [10 12 14 16]
- c# - 如何将变量放入c#属性中?
- javascript - 在 x 个字符后阅读更多内容 JavaScript