具有多个条件的Mysql查询
我必须得到多个类别的产品(Prestashop数据库) 这是我的问题:具有多个条件的Mysql查询,mysql,sql,prestashop,Mysql,Sql,Prestashop,我必须得到多个类别的产品(Prestashop数据库) 这是我的问题: SELECT COUNT( cp.`id_product` ) AS total FROM `ps_product` p INNER JOIN ps_product_shop product_shop ON ( product_shop.id_product = p.id_product AND product_shop.id_shop =1 ) LEFT JOIN `ps_category_product` cp O
SELECT COUNT( cp.`id_product` ) AS total
FROM `ps_product` p
INNER JOIN ps_product_shop product_shop ON ( product_shop.id_product = p.id_product
AND product_shop.id_shop =1 )
LEFT JOIN `ps_category_product` cp ON p.`id_product` = cp.`id_product`
WHERE cp.`id_category` =6
AND cp.`id_category` =126
AND product_shop.`visibility`
IN (
"both", "catalog"
)
AND product_shop.`active` =1
我想选择内部类别6和内部类别126,但我的查询返回0
一个产品可以有多个类别,因此我只想在两个类别中选择产品
如何解决这个问题,使我得到预期的结果?使用
WHERE cp.`id_category` =6
OR cp.`id_category` =126
朋友,试试这个
SELECT COUNT( cp.id_product ) AS total
FROM ps_product p
Left JOIN ps_product_shop product_shop ON ( product_shop.id_product = p.id_product
AND product_shop.id_shop =1 )
LEFT JOIN ps_category_product cp ON p.id_product = cp.id_product
and cp.id_category in(6)
LEFT JOIN ps_category_product cp1 ON p.id_product = cp1.id_product
and cp1.id_category in(126)
WHERE cp.id_category is not null
and cp1.id_category is not null
AND product_shop.visibility IN ('both', 'catalog')
AND product_shop.active =1
你是说6到126之间?无法针对6和126的一列进行验证。如果介于两者之间,则使用
SELECT COUNT( cp.`id_product` ) AS total
FROM `ps_product` p
INNER JOIN ps_product_shop product_shop ON ( product_shop.id_product = p.id_product
AND product_shop.id_shop =1 )
LEFT JOIN `ps_category_product` cp ON p.`id_product` = cp.`id_product`
WHERE cp.`id_category` between 6 and 126
AND product_shop.`visibility`
IN (
"both", "catalog"
)
AND product_shop.`active` =1
在这两个类别中:
SELECT COUNT( cp.id_product ) AS total
FROM ps_product p
Left JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product
AND product_shop.id_shop = 1)
WHERE product_shop.visibility IN ('both', 'catalog')
AND product_shop.active = 1
AND EXISTS(SELECT * FROM ps_category_product cp
WHERE p.id_product = cp.id_product AND cp.id_category = 6)
AND EXISTS(SELECT * FROM ps_category_product cp
WHERE p.id_product = cp.id_product AND cp.id_category = 12)
不是那样。我只想要这些类别的产品,不是全部在第6类和第126类内部。它返回第6类和第126类中的产品,但不是仅在这两个类别中的产品。内部是什么意思?请举例说明。我有两种产品属于第6类。我有3种126类产品。只有一个产品有类别6和126,所以,我只想要一个结果!所以你们想要产品,这在两个类别中都有?仍然在寻找最好的选择。而不是cp.id_category=6和cp.id_category=126。在(6126)中使用cp.id_类别。检查下面的完整代码。不使用内部连接,仅在类别6和126中使用左连接编号
WHERE (cp.`id_category` = 6 OR cp.`id_category` = 126)
AND product_shop.`visibility` IN ("both", "catalog")
AND product_shop.`active` = 1
SELECT COUNT( cp.id_product ) AS total
FROM ps_product p
Left JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product
AND product_shop.id_shop = 1)
WHERE product_shop.visibility IN ('both', 'catalog')
AND product_shop.active = 1
AND EXISTS(SELECT * FROM ps_category_product cp
WHERE p.id_product = cp.id_product AND cp.id_category = 6)
AND EXISTS(SELECT * FROM ps_category_product cp
WHERE p.id_product = cp.id_product AND cp.id_category = 12)