我正在寻找可查询相关代码的Doctrine函数:

select pt.product_id from product_taxon pt
    join product_taxon pt2 on pt.product_id=pt2.product_id and pt2.taxon_id = 101
where pt.taxon_id = 47;


这意味着选择所有具有ID为101的分类单元和ID为47的分类单元的元素,换句话说,同时具有101和47的分类单元。

我尝试使用IN(),但是它选择的元素只能具有47和101分类单元ID之一。

最佳答案

一种典型的使用聚合的方式:

SELECT
    pt.product_id
FROM product_taxon pt
INNER JOIN product_taxon pt2
    ON pt.product_id = pt2.product_id
WHERE pt2.taxon_id IN (101, 47)
GROUP BY pt.product_id
HAVING COUNT(DISTINCT pt2.taxon_id) = 2;

09-26 03:40