查询以获取没有请求的产品数量

时间:2019-05-13 08:47:03

标签: mysql sql join left-join outer-join

我写了以下SQL,

SELECT COUNT(f.productid) AS count
FROM   `product_list` `f`
      LEFT JOIN `product_requests` `r`
      ON `r`.`product_id` = `f`.`productid`
WHERE  `f`.`product_cat` IN( 1, 4 )
      AND `f`.`product_subcat` IN( '1', '2', '3', '4',
                           '5', '6', '7', '9',
                           '10', '11')
      AND `r`.`product_id` IS NULL

我想做的是获取未针对特定产品类别和产品子类别提出产品请求的产品计数。

  • product_list表-产品列表
  • product_requests表-每个产品的请求列表

查询没有输出?超时了。

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

尝试一下:

SELECT COUNT (f.productid) AS COUNT
  FROM (SELECT *
          FROM       `product_list` f where `f`.`product_cat` IN( 1, 4 )
      AND `f`.`product_subcat` IN( '1', '2', '3', '4',
                           '5', '6', '7', '9',
                           '10', '11') ) `f`
      LEFT JOIN `product_requests` `r`
      ON `r`.`product_id` = `f`.`productid` AND `r`.`product_id` IS NULL

您的情况:

where
...
`r`.`product_id` IS NULL

需要在ON子句中,否则它将把您的左联接转换为内部联接。有关更多详细信息,请see this link

此外,为了进行优化,请尝试过滤加入之前。