[英]one product in many categories, finding n number of products from each category - php mysql
[英]MYSQL 8 + : Query to find the products under categories , when category is in hierarchy and product is attached to leaf category node
表:類別
ID | 名稱 | 父母 |
---|---|---|
1個 | 電子產品 | null |
2個 | 電視 | 1個 |
3個 | 便攜的 | 1個 |
4個 | 陰極射線管 | 2個 |
5個 | 液晶顯示器 | 2個 |
6個 | 等離子體 | 2個 |
7 | 音樂播放器 | 3個 |
8個 | CD 播放器 | 3個 |
9 | Flash | 7 |
表:產品(產品附在葉子類別id上)
ID | 名稱 | 類別編號 |
---|---|---|
1個 | Flash 播放器 | 9 |
2個 | 三星液晶電視 | 5個 |
3個 | LG 等離子電視 | 6個 |
查詢生成category_products結果集??
結果集:
ID | 產品編號 | 類別編號 |
---|---|---|
1個 | 1 (Flash 播放器) | 9(閃光燈) |
2個 | 1 (Flash 播放器) | 7(Mp3 播放器) |
3個 | 1 (Flash 播放器) | 3(便攜式) |
4個 | 1 (Flash 播放器) | 1(電子) |
5個 | 2(三星液晶電視) | 5(液晶) |
6個 | 2(三星液晶電視) | 2(電視) |
7 | 2(三星液晶電視) | 1(電子) |
5個 | 3(LG 等離子電視) | 5(等離子) |
6個 | 3(LG 等離子電視) | 2(電視) |
7 | 3(LG等離子電視) | 1(電子) |
我們如何從 mysql 查詢生成這個結果集?
WITH RECURSIVE
recursive_membership AS
(
SELECT
p.id AS product_id,
p.name AS product_name,
c.id AS category_id,
c.name AS category_name,
c.parent AS category_parent_id
FROM
products p
INNER JOIN
categories c
ON c.id = p.category_id
UNION ALL
SELECT
r.product_id,
r.product_name,
c.id,
c.name,
c.parent
FROM
recursive_membership r
INNER JOIN
categories c
ON c.id = r.category_parent_id
)
SELECT
product_id,
product_name,
category_id,
category_name
FROM
recursive_membership
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.