0

私はいくつかのSQLをいじって、望ましい結果を得ようとしていますが、私が望むものを完全に得ていません。リレーションシップを持つ products テーブルと product_filters テーブルがあり、product_filters テーブルは filter_values テーブルに関連付けられています。私のSQLの例では、結果が出力されますが、トップレベルで製品の数を取得することはできず、2ではなく3が出力されます

これは結果セットの例で、これはカウント の例です

だから私が欲しいのは、2つの製品の正確な数を取得することです

SELECT COUNT(*)
FROM 
    (SELECT x.product_id,x.department_id,x.title, pi.image_medium
        FROM products x      
        INNER JOIN product_images pi on pi.product_id = x.product_id
     WHERE x.department_id = 3
    )p
INNER JOIN product_filters pf on pf.product_id = p.product_id
LEFT JOIN filters f on f.filter_id = pf.filter_id
RIGHT JOIN filter_values fv on fv.filter_value_id = pf.filter_value_id
WHERE p.department_id = 3  AND pf.filter_value_id IN(1,3)
4

1 に答える 1

1

SELECT COUNT(*)に変更SELECT COUNT(DISTINCT p.product_id)

カウントされている結果セットを表示する場合は、 に置き換えCOUNT(*)ます*。この結果、Samsung Tablet 2 には句product_filtersに一致する行が 2 つあるため、2 行になります。WHERE

于 2013-04-25T01:37:02.207 に答える