使用特定父级计算类别中的广告

时间:2017-05-05 12:30:04

标签: mysql count

我得到了以下设置:
表:包含ads_id的广告
表格:ads_id与广告相关联的ads_to_categories
表:category_id的类别 表:categories_to_parents,其category_id连接到类别
enter image description here

我想计算一个类别中有多少广告。例如,ads_id 0000000070属于以下类别:categories_id 0000000007

enter image description here

这就是categories_id有多个parent_id,我想通过parent_id 0000000003 enter image description here知道这个类别中有多少广告 我尝试了很多东西,我得到了参数$ parent_id available和$ categories_id可用,但不知怎的,我得到了其他parent_id的结果。现在我根本没有查询,我感到沮丧并删除了所有内容。

我想知道categories_id 0000000007中有多少广告与parent_id 0000000003。我该怎么做?

例如,我得到了这个:

SELECT count(*) 
FROM ads_to_categories as atc, categories_to_parents ctp 
WHERE atc.categories_id = '0000000007' 
AND atc.categories_id = ctp.categories_id 
AND ctp.parent_id = '0000000003'

这给了我1个结果,当我将ctp.parent_id更改为'0000000004'时,我也得到1个命中,但这应该是0.是否可以使用子查询或其他东西获得正确的查询,或者我应该ads_to_categories延长parent_id吗?

1 个答案:

答案 0 :(得分:0)

我想通了。我最终得到了这个问题:

SELECT count(a.ads_id) as totalAds
FROM ads as a, ads_to_categories as atc, categories_to_parents ctp
WHERE a.ads_id = atc.ads_id
AND atc.categories_id = :categories_id
AND atc.categories_id = ctp.categories_id
AND (a.ads_status = :ads_status_active OR a.ads_status = :ads_status_reserved)
GROUP BY ctp.parent_id
HAVING ctp.parent_id = :parent_id

问题是,当我更改类别时,parent_id会随我变化,因此始终存在匹配。我最终使用parent_id

扩展了ads_to_categories表