[英]Filter one category of a product, but bring all categories of the filtered products
就是這個
我有一個查詢,該查詢將數據庫中包含的所有產品帶入。 這些產品屬於一種或多種類別。 所以我有3張桌子。
-產品表
-類別表
-包含兩者之間關系的表格。
獲取產品時,我使用GROUP_CONCAT獲取產品所屬的所有類別的名稱,並且效果很好。 我得到了我期望的結果。
問題出在我篩選一個類別時。 然后,GROUP_CONCAT不再起作用,它僅帶來所需類別的產品,而不帶來該產品所屬的所有類別。
這是我未針對特定類別進行過濾時的查詢。
SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as category
FROM products p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0
這是我篩選特定類別時的查詢:
SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as categories
FROM product p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
AND pcr.category_id = 27
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0
有人可以幫我嗎?
你可以試試這個
SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as categories
FROM product p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
AND exists( select * from products_categories_relation where products_categories_relation.category_id = 27 and products_categories_relation.product_id = p.id )
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.