リンクされた製品の製品 ID が重複しているために誤った結果を返す SQL クエリがあるため、製品 ID の最初のインスタンスのみを取得することを期待して、クエリの最後に次を追加しました。
AND pc.products_id
IN
(SELECT
pc.products_id, MIN(categories_id)
FROM
zen_products_to_categories pc
GROUP BY
pc.products_id)
しかし、プロセスを実行すると、オペランドに 1 列を含める必要があるというエラーが表示されます。そのクエリを単独で実行したところ、各製品 ID が 1 回しか返されなかったので、エラーが発生する理由がわかりません。
私が今持っている完全なクエリは次のとおりです。
SELECT p.products_quantity, p.abebooks_status,
p.products_id AS id,
p.products_status AS prodStatus,
FORMAT( IFNULL(s.specials_new_products_price, p.products_price),2) AS price,
pc.categories_id AS prodCatID,
c.parent_id AS catParentID,
cd.categories_name AS catName
FROM
zen_products p
JOIN zen_products_description pd ON p.products_id=pd.products_id
JOIN zen_products_to_categories pc ON p.products_id=pc.products_id
JOIN zen_categories c ON pc.categories_id=c.categories_id
JOIN zen_categories_description cd ON c.categories_id=cd.categories_id
left join zen_specials s on ( s.products_id = p.products_id AND ( (s.expires_date > CURRENT_DATE) OR (s.expires_date = 0) ) )
WHERE p.products_price > 0 and p.products_status = 1
AND pc.products_id
IN
(SELECT pc.products_id, MIN(categories_id)
FROM zen_products_to_categories pc GROUP BY pc.products_id)
ORDER BY catName ASC
困惑したので、余分なクエリを追加しても機能しない理由を誰か教えてもらえますか