簡體   English   中英

過濾產品的一個類別,但帶走所有類別的過濾產品

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM