Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Mysql WHERE子句返回结果而不考虑子查询_Mysql_Subquery - Fatal编程技术网

Mysql WHERE子句返回结果而不考虑子查询

Mysql WHERE子句返回结果而不考虑子查询,mysql,subquery,Mysql,Subquery,我使用子查询从类别及其下的所有子类别返回产品。下面是它的sql查询: SELECT ca.categoryid, p.*, FLOOR(prodratingtotal/prodnumratings) AS prodavgrating, 0 AS prodgroupdiscount FROM cart_categoryassociations ca, cart_products p WHERE p.prodvisible=1 AND p.prodfeatured=1 AND

我使用子查询从类别及其下的所有子类别返回产品。下面是它的sql查询:

SELECT
    ca.categoryid, p.*, FLOOR(prodratingtotal/prodnumratings) AS prodavgrating, 0 AS prodgroupdiscount
FROM
    cart_categoryassociations ca, cart_products p
WHERE
    p.prodvisible=1 AND p.prodfeatured=1 AND (ca.categoryid=47 OR ca.categoryid IN (SELECT categoryid FROM cart_categories WHERE catparentid=47))
当我运行它时,它仅基于p.prodvisible=1和p.prodfeatured=1部分返回结果,忽略catparentid=47部分的cart_类别中的SELECT categoryid=47或ca.categoryid

换句话说,它会带回系统中所有的特色产品,即使它们不属于子查询中提到的类别

附言:我试过单独运行括号中的部分,它返回正确的类别

MySQL版本5.0.8

FROM
cart_categoryassociations ca, cart_products p
我不知道您的数据库结构,但这不应该用左连接而不是完全连接来完成吗。这是故意的吗

WHERE
    p.prodvisible=1 AND p.prodfeatured=1 AND (ca.categoryid=47 OR ca.categoryid IN (SELECT categoryid FROM cart_categories WHERE catparentid=47))
我认为这是返回cart_产品中与p.prodvisible=1和p.prodfeatured=1匹配的所有行,对于与catparentid=47子条款中的SELECT categoryid中的ca.categoryid=47或ca.categoryid匹配的每一行

cart_产品不具有cart_类别的某种外键吗? 然后您可以添加:


p.categoryid=ca.categoryid

哪个表的别名是pi?它来自左连接,我删除了左连接以简化查询。现在删除它。简化查询返回与主查询相同的结果。谢谢,我知道这一定是我一直缺少的非常简单的东西。