mysql count的子查询_使用COUNT进行子查询的慢MYSQL查询

我首先尝试重组,通过供应商预先查询问题的数量并审核ONCE。然后,加入其余的细节。通过使用STRAIGHT_JOIN关键字,它应按显示的顺序进行处理。这将首先预先聚合并使用THAT作为加入供应商和供应商站点的基础。无论如何都不需要外部组,因为它基于供应商ID。但是,对supplier_sites(您的ss.supplier_no)的加入意味着供应商有多个位置。这是否意味着地址和活动状态列来自该表?

问题的加入是否应与特定供应商相关联,是否与相应的网站位置相关联?

此外,由于prequery在supplier_id!='0'上具有WHERE子句,因此不需要下游,因为这将是与其他表的正常连接的基础,从而将它们从结果集中排除。

SELECT STRAIGHT_JOIN

PreAggregate.supplier_id,

PreAggregate.supplier_name,

address1,

address2,

address3,

address4,

suppliertype,

postcode,

contact_name,

PreAggregate.Questions,

IF (active=1,'Yes', IF (active=2, 'NCR Only','Inactive')) AS rated,

PreAggregate.Reviewed,

questapproved,

ss.supplier_no AS supplier_no

FROM

(select

s1.Supplier_ID,

s1.Supplier_Name,

SUM( IF( q1.Incomplete = '0', 1, 0 )) Questions,

SUM( IF( q1.Reviewed = '1', 1, 0 )) Reviewed

from

suppliers s1

join supplier_questions q1

ON s1.supplier_id = q1.supplier_id

where

s1.supplier_id != '0'

group by

s1.Supplier_ID

ORDER BY

s1.supplier_name ASC ) PreAggregate

JOIN suppliers c

ON PreAggregate.Supplier_ID = c.Supplier_ID

JOIN supplier_site ss

ON PreAggregate.Supplier_ID = ss.supplier_id

AND ss.Site_ID = '2'

LIMIT 0, 20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值