サブクエリを使用して、カテゴリとそれに属するすべてのサブカテゴリの両方から商品を返します。私はそれを実行すると、それは(ca.categoryid=47 OR ca.categoryid IN (SELECT categoryid FROM cart_categories WHERE catparentid=47))
部分を無視して、単にp.prodvisible=1 AND p.prodfeatured=1
一部に基づいて結果を返すWHERE句は、サブクエリを考慮せずに結果を返しています
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))
:ここでのSQLクエリがあります。
(言い換えれば、それは彼らがサブクエリで述べたカテゴリに属していない場合でも、システム内のすべての機能を備えた製品を持ち帰る)
PS:私は別に括弧内の部分を実行しようとしていると正しいカテゴリを返します。
MySQLバージョン5.0.8。
エイリアス 'pi'を持っているテーブル? –
これは、ここで質問するためにクエリを簡略化するために削除した左結合からのものです。今すぐ削除しました。 (簡略化されたクエリはメインクエリと同じ結果を返す) –