0

この SQL クエリがあります。

SELECT prod.* FROM bb_admin.bb_directory_products as prod 
LEFT JOIN bb_admin.bb_map_product_category as mapcat ON prod.product_id = mapcat.product_id 
LEFT JOIN bb_admin.bb_categories_products as cat ON mapcat.category_id = cat.category_id 
LEFT JOIN bb_admin.bb_map_product_tag as maptag ON prod.product_id = maptag.product_id 
LEFT JOIN bb_admin.bb_tags as tag ON maptag.tag_id = tag.tag_id 
WHERE (prod.status='1' OR prod.status='3' OR prod.status='5') 
AND prod.is_catalogue='1' AND cat.slug = 'barongs-suits' 
AND tag.title IN ('gray','classic') 
GROUP BY prod.product_id

私が欲しいのは、「グレー」と「クラシック」のタグが付いた製品を表示することです。

試しAND tag.title = 'gray' AND tag.title = 'classic'ましたがうまくいきません。

ありがとう!

4

1 に答える 1

1
製品を選択*
FROM bb_admin.bb_directory_products を製品として
左結合 bb_admin.bb_map_product_category を mapcat ON prod.product_id = mapcat.product_id として
mapcat.category_id = cat.category_id の猫として左結合 bb_admin.bb_categories_products
prod.product_id = maptag.product_id の maptag として左結合 bb_admin.bb_map_product_tag
maptag.tag_id = tag.tag_id のタグとして bb_admin.bb_tags を LEFT JOIN
WHERE (prod.status='1' OR prod.status='3' OR prod.status='5')
AND prod.is_catalogue='1' AND cat.slug = 'barongs-suits'
AND tag.title IN ('gray','classic')
GROUP BY prod.product_id
HAVING count(distinct tag.title) = 2

aに両方のタグhavingがあることを確認する句を追加します。product_id

于 2013-08-05T08:41:07.133 に答える