簡體   English   中英

MYSQL 8 +:查詢查找類別下的產品,當類別在層次結構中並且產品附加到葉類別節點時

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

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