簡體   English   中英

SQL查詢-將多種條件放在一種產品上

[英]SQL Query - put multiple condition on one product

請為此提供幫助:我有一張桌子,如:

id_feature  id_product  id_feature_value
1              1           50
2              1           54
5              1           67

我想從此表中選擇:

從(id_feature = 1 AND id_feature_value = 50)AND(id_feature = 2 AND id_feature_value = 54)AND(id_feature = 5 AND id_feature_value = 67)的table中選擇count(id_product)

我的查詢必須符合條件。 就像有count(condition)= 3

我不知道該怎么寫!

請幫我! 對不起我的英語!

    SELECT count( pf.id_product ) AS nr_product, value, fv.id_feature_value, filter
FROM `nk_category_features` cat_f
INNER JOIN `nk_feature_value` fv ON fv.id_feature = '11'
AND fv.value IS NOT NULL
INNER JOIN `nk_product_features` pf ON pf.id_feature = '11'
AND pf.id_feature_value = fv.id_feature_value
INNER JOIN `nk_product` p ON p.id_product = pf.id_product
AND p.product_active = '1'
INNER JOIN `nk_product_features` pf1 ON ( pf1.id_feature = '14'
AND (
pf1.id_feature_value = '21'
) )
WHERE cat_f.id_feature = '11'
AND filter >0
GROUP BY pf.id_feature, pf.id_product
ORDER BY abs( fv.value ) ASC

這是我現在使用的查詢,但是我不喜歡內部連接的解決方案寬度,內部連接在同一張桌子上

嘗試這個:

select id_product,count(*)
from table
where (id_feature = 1 AND id_feature_value = 50) 
   OR (id_feature = 2 AND id_feature_value = 54) 
   OR (id_feature = 5 AND id_feature_value = 67)
group by id_product
having count(*) = 3

僅獲取滿足where子句的產品總數

select count(*)
from 
  ( select id_product
    from table
    where (id_feature = 1 AND id_feature_value = 50) 
       OR (id_feature = 2 AND id_feature_value = 54) 
       OR (id_feature = 5 AND id_feature_value = 67)
    group by id_product
    having count(*) = 3
  ) tmp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM