我需要一个SQL查询,我从列supplierX获得供应商价格,但我只想要比较2个或更多价格的结果。对于2个供应商,我使用此代码:
select *
from ps_product
join ps_product_lang on ps_product.id_product = ps_product_lang.id_product
join pricecompare on ps_product.id_product = pricecompare.id_product
where
supplier1 > 0 and supplier2 > 0
order by
ps_product.id_product desc
我如何为6家供应商做到这一点?
样本表:
id prod_name ref supplier1 supplier2 supplier3 supplier4
------------------------------------------------------------------
12 abcd 123 0 0 0 12,00
13 sdsd 423 10,4 0 0 12,00
14 aaa 413 10,4 10,00 0 12,00
我希望结果是:
13 sdsd 423 10,4 0 0 12,00
14 aaa 413 10,4 10,00 0 12,00
我想要所有包含2个或更多供应商价格的行。
此致 佩德罗
答案 0 :(得分:1)
您好我同意Andriy的设计已经破解您应该有单独的桌面供应商,您将拥有所有供应商,而不是将所有这些与多个关系连接在一起,但如果您想继续这种方式,您可以尝试做这样的事情:
SELECT *
FROM myTable
WHERE ((CASE WHEN supp1 > 0 THEN 1 ELSE 0 END) +
(CASE WHEN supp2 > 0 THEN 1 ELSE 0 END) +
(CASE WHEN supp3 > 0 THEN 1 ELSE 0 END) +
(CASE WHEN supp4 > 0 THEN 1 ELSE 0 END)) >= 2
这是SQL小提琴,看看它是如何工作的:http://sqlfiddle.com/#!9/b96e5/21
GL!
答案 1 :(得分:0)
我建议您将供应商转移到单独的数据库,并将列supplier_id添加到您的表中。
所以查询将如下所示:
select *,count(distinct supplier_id) As count_suppliers from ps_product join ps_product_lang on ps_product.id_product=ps_product_lang.id_product join pricecompare on ps_product.id_product=pricecompare.id_product HAVING count_suppliers>6 order by ps_product.id_product desc