【问题标题】:How to create a MySQL hierarchical recursive join如何创建 MySQL 分层递归连接
【发布时间】:2022-01-26 19:18:10
【问题描述】:

我在获取 markup_category 值时遇到问题。

我必须计算产品零售价。

retail_price = price + (price / 100 * markup_category)

所以当产品类别有 markup_category 时没有问题。但有时类别没有此值,则必须使用父类别标记。我无法在一次查询中获取它的值。

表结构:

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 获得第一类?

【问题讨论】:

  • 打扰一下,在这里查询stackoverflow.com/questions/20215744/…
  • 您的意思是该问题及其答案回答了您的问题?
  • @ysth 不,只是首先将错误的链接添加到原始问题。我仍然无法获取 markup_category
  • select version(); 显示什么?
  • @ysth 10.3.32-MariaDB

标签: mysql sql hierarchical-data


【解决方案1】:

这对我有帮助

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

【讨论】:

    猜你喜欢
    • 2018-07-09
    相关资源
    最近更新 更多