【问题标题】:MySql query to fetch results from two tablesMySql 查询从两个表中获取结果
【发布时间】:2018-09-11 18:17:55
【问题描述】:

我想从零售商表中获取总零售商,并从访问信息表中获取其他属性。此查询为总零售商和访问过的零售商提供了正确的结果,但对反馈计数、承诺订单计数等两列给出了不正确的结果。

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;

This is my retailer table from which I want to count total retailers from this table

This is my visit_info table from which I want to count visited_retailers, feedback count, Promise_order_count_stock_count and payment count which are defined as in activity_type column in visit_info table

【问题讨论】:

  • 您需要提供示例表数据、预期输出以及您当前的查询返回什么,然后我们才能弄清楚
  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • 使用连接是行不通的。它给出了相同的结果。

标签: mysql sql mysql-workbench


【解决方案1】:

有两个子查询,每个表一个。 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 这里可能不需要。

【讨论】:

  • 亲爱的,如果我在 where 子句中使用日期,它不会返回任何结果
  • 为每个子查询添加一个带日期条件的 WHERE 子句。
  • date_format(tbl_visit_info.date, '%Y-%m-%d') 在 '2018-07-02' 和 '2018-08-37' 之间;我已经添加了这个,但它给出了一个错误错误代码:1054。'where 子句'中的未知列'tbl_visit_info.date'
  • 好吧,既然我不知道你的数据模型,我只能猜测。也许只有在 2:nd 子查询(tbl_visit_info 之一)中才需要 WHERE 子句?
猜你喜欢
  • 2013-12-26
  • 1970-01-01
  • 2020-12-17
  • 2017-07-11
  • 2023-03-23
  • 2013-11-30
  • 1970-01-01
  • 2014-02-14
  • 2017-04-25
相关资源
最近更新 更多