如何创建 MySQL 层次递归连接
How to create a MySQL hierarchical recursive join
我在获取 markup_category 值时遇到问题。
我要计算产品零售价。
retail_price = price + (price / 100 * markup_category)
所以当产品类别有 markup_category 时,这不是问题。但有时类别没有此值,则必须使用父类别标记。我无法在一个查询中获取它的值。
Table结构:
category_id
parent_id
markup_category
168
0
50.00
1048
168
0.00
1092
1048
0.00
当我尝试做类似的事情时:(在这里查询:How do I import an SQL file using the command line in MySQL?)
SELECT category_id, @pv:=parent_id AS parent_id, markup_category FROM cscart_categories JOIN (SELECT @pv:=1092) tmp WHERE category_id=@pv
我只得到这个结果:
category_id
parent_id
markup_category
1048
168
0.00
1092
1048
0.00
如何使用 markup_category > 0
获得第一个类别?
这对我有帮助
WITH RECURSIVE markup_categories AS (
SELECT
category_id,
parent_id,
markup_category
FROM
cscart_categories
WHERE
category_id = 1092
UNION ALL
SELECT
c2.category_id,
c2.parent_id,
c2.markup_category
FROM
cscart_categories AS c2,
markup_categories AS mc
WHERE
c2.category_id = mc.parent_id
)
SELECT
*
FROM
markup_categories
我在获取 markup_category 值时遇到问题。
我要计算产品零售价。
retail_price = price + (price / 100 * markup_category)
所以当产品类别有 markup_category 时,这不是问题。但有时类别没有此值,则必须使用父类别标记。我无法在一个查询中获取它的值。
Table结构:
category_id | parent_id | markup_category |
---|---|---|
168 | 0 | 50.00 |
1048 | 168 | 0.00 |
1092 | 1048 | 0.00 |
当我尝试做类似的事情时:(在这里查询:How do I import an SQL file using the command line in MySQL?)
SELECT category_id, @pv:=parent_id AS parent_id, markup_category FROM cscart_categories JOIN (SELECT @pv:=1092) tmp WHERE category_id=@pv
我只得到这个结果:
category_id | parent_id | markup_category |
---|---|---|
1048 | 168 | 0.00 |
1092 | 1048 | 0.00 |
如何使用 markup_category > 0
获得第一个类别?
这对我有帮助
WITH RECURSIVE markup_categories AS (
SELECT
category_id,
parent_id,
markup_category
FROM
cscart_categories
WHERE
category_id = 1092
UNION ALL
SELECT
c2.category_id,
c2.parent_id,
c2.markup_category
FROM
cscart_categories AS c2,
markup_categories AS mc
WHERE
c2.category_id = mc.parent_id
)
SELECT
*
FROM
markup_categories