簡體   English   中英

如何選擇每個產品的所有類別,並在每個產品的一行中返回該類別?

[英]How do I select all categories per product and returning this in one row per product?

我現在有點動腦筋,因為這應該很容易(我認為)。

我有三個表:

  • 產品清單
  • 類別清單
  • category_map(鏈接產品和類別)

我想列出帶有類別(名稱)的產品。 一種產品可能具有許多類別。

// This query
SELECT a.id, a.name, b.category
FROM sl_link_product_category c
LEFT JOIN sl_product a ON c.fk_productID = a.id
LEFT JOIN sl_category b ON c.fk_categoryID = b.id
WHERE c.fk_categoryID = b.id
ORDER BY a.id
// Gives me this result
| 1 | product 1 | cat 1 |  
| 1 | product 1 | cat 2 |  
| 1 | product 1 | cat 3 |  
| 2 | product 2 | cat 2 |
| 2 | product 2 | cat 4 |

現在,在最終結果集中,我想要一個包含產品的數組,其中每個產品都有一個類別數組。

我的問題是; 我是否需要使用PHP中的結果集才能實現目標? 還是可以在MySQL中將所有類別(逗號分隔)放在一個變量/列中?

您正在尋找GROUP_CONCAT函數:

SELECT a.id, a.name, GROUP_CONCAT(b.category)
FROM sl_link_product_category c
LEFT JOIN sl_product a ON c.fk_productID = a.id
LEFT JOIN sl_category b ON c.fk_categoryID = b.id
GROUP BY a.id, a.name
ORDER BY a.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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