Php mysql在何处加入多个
我有一个sql查询。Where子句有点棘手,因为我需要它告诉我fv.position应该大于一个数字,id_有一个特定的数字,但只在那个状态下。所以在堆栈这样的地方可能有多个 这就是我到目前为止的想法:Php mysql在何处加入多个,php,mysql,join,Php,Mysql,Join,我有一个sql查询。Where子句有点棘手,因为我需要它告诉我fv.position应该大于一个数字,id_有一个特定的数字,但只在那个状态下。所以在堆栈这样的地方可能有多个 这就是我到目前为止的想法: SELECT * FROM psx_product p INNER JOIN psx_feature_product fp ON fp.id_product = p.id_product INNER JOIN psx_feature_value fv ON fp.
SELECT
*
FROM
psx_product p
INNER JOIN
psx_feature_product fp ON fp.id_product = p.id_product
INNER JOIN
psx_feature_value fv ON fp.`id_feature_value` = fv.`id_feature_value`
WHERE
(fv.position > 0 AND fp.id_feature = 6)
AND
(fv.position > 5 AND fp.id_feature = 7)
AND
(fv.position > 2 AND fp.id_feature = 8)
但是我相信上面的例子是错误的处理方式,因为fv.position不知道它只与perentesis中的特征相连接,并且叠加where语句,只给出空结果,where,one给出结果。这应该怎么做才对呢?如果我理解正确的话,在where子句中,您需要的是案例之间的OR,而不是AND 显然,一个字段不能同时等于两个不同的值 如果有一个公式可以设置fv.position和fp.id_功能的参数,那么您可以保存所有特定条件并编写一个特定条件
SELECT * FROM psx_product p
INNER JOIN psx_feature_product fp ON fp.id_product = p.id_product
INNER JOIN psx_feature_value fv ON fp.`id_feature_value` = fv.`id_feature_value` WHERE
(fv.position > 0 AND fp.id_feature = 6) OR
(fv.position > 5 AND fp.id_feature = 7) OR
(fv.position > 2 AND fp.id_feature = 8)
对这是正确理解的。虽然当我使用OR语句时,它会给出双重结果,比如3次产品id为139等。我想我已经通过使用GROUP by p.id_产品最终解决了这个问题。这对双打来说是一个很好的解决方案吗?我不知道表格和你想要达到的目标之间有什么关系,但是group by的usw应该help@simon是的,根据表A和目标A的关系A,我看不出代码不工作的原因。但是,永远不会提供条件,因为在这种情况下,所有AND运算符都必须为真,并且您永远不会拥有同时为6、7和8的id特性。在括号外的每个条件之间需要一些OR运算符