Php 选择产品变体SQL

Php 选择产品变体SQL,php,sql,Php,Sql,这是我的查询,没有变量选项 SELECT p.*, pd.`name` AS `product_name` FROM `product` AS `p` LEFT JOIN `product_description` AS `pd` ON p.`id` = pd.`product_id` LEFT JOIN `product_to_variant` AS `pv` ON p.`id` = pv.`product_id` WHERE p.`status` = 0 GROUP BY p.`id`

这是我的查询,没有变量选项

SELECT p.*, pd.`name` AS `product_name`
FROM `product` AS `p`  
LEFT JOIN `product_description` AS `pd` ON p.`id` = pd.`product_id` 
LEFT JOIN `product_to_variant` AS `pv` ON p.`id` = pv.`product_id`
WHERE p.`status` = 0
GROUP BY p.`id`
ORDER BY p.`id` DESC;
SQLFiddle:

下面的查询有不同的选项,但不起作用

SELECT p.*, pd.`name` AS `product_name`
FROM `product` AS `p`  
LEFT JOIN `product_description` AS `pd` ON p.`id` = pd.`product_id` 
LEFT JOIN `product_to_variant` AS `pv` ON p.`id` = pv.`product_id`
WHERE p.`status` = 0
    AND (pv.`feature_id` = 2 AND pv.`variant_id` = 6)
    AND (pv.`feature_id` = 3 AND pv.`variant_id` = 11)
GROUP BY p.`id`
ORDER BY p.`id` DESC;
我也试图查询,但没有输出

SELECT pv.* FROM `product_to_variant` AS `pv`
WHERE (pv.`feature_id` = 2 AND pv.`variant_id` = 2)
    AND (pv.`feature_id` = 3 AND pv.`variant_id` = 11)

您对如何接收产品还有其他想法吗:14、15按特定变体编号6和11这里有一种方法可以满足您的需求:

SELECT p.*, pd.name AS product_name
FROM product p LEFT JOIN
     product_description pd
     ON p.id = pd.product_id JOIN
     product_to_variant pv
     ON p.id = pv.product_id
WHERE p.status = 0 AND
      ((pv.feature_id = 2 AND pv.variant_id = 6) OR
       (pv.feature_id = 3 AND pv.variant_id = 11)
      )
GROUP BY p.id
HAVING COUNT(DISTINCT feature_id) = 2
ORDER BY p.id DESC;
注:

没有行可以满足您的原始条件。因为一列不能同时有两个值。因此是OR而不是AND。 HAVING子句检查两个值是否匹配。 不需要对pv进行左连接,因为您在WHERE子句中检查该表中的值-必须有匹配项。 pa的左连接可能也没有必要。 到处使用反勾号只会使查询更难写和读。 也许是这样:

SELECT pv.* FROM `product_to_variant` AS `pv`
WHERE (pv.`feature_id` = 2 AND pv.`variant_id` = 2)
OR (pv.`feature_id` = 3 AND pv.`variant_id` = 11)

与AND不同,AND表示在结果中同时需要特征id和变体id,而使用OR,因为它同时需要特征id和变体id。

这些分组依据无效。将在较新的MySQL版本上引发错误,除非处于兼容模式。常规GROUP BY规则说:如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是集合函数的参数!是的,但是我需要ANDprntscr.com/ect2ohThanks,但是如果两个产品具有相同的功能,那么有一个问题其他任何想法都可以通过变体_id 6和11接收产品14、15@约翰南德拉。这是个什么问题?你知道COUNTDISTINCT是做什么的吗?我想我知道了。我稍后会留下反馈。谢谢你的回答