Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql在何处加入多个_Php_Mysql_Join - Fatal编程技术网

Php mysql在何处加入多个

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.

我有一个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.`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运算符