如何获取所有父id

klh5stk1  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(293)

我有一个mysql表,其中包含一个类别列表。

category_id         name                parent_id
    --------------------------------------------------
    1                    beverage           NULL
    2                    Water              1
    3                    Sparkling Water    2
    4                    Snacks             NULL
    5                    Chips              4
product_id      name            category_id
    -------------------------------------
    1               water001        3   
    2               Chips001        5

如何通过一个查询获得类别路径?

SELECT name as product_name,category_path FROM product_table
product_name    category_path
    -------------------------------------
    water001        3,2,1
    Chips001        5,4
y53ybaqx

y53ybaqx1#

我想你需要一个存储过程。我不认为用一条sql语句就可以做到这一点。
我不熟悉编写sql过程,但这样的想法可能会有所帮助:

CREATE FUNCTION GetPath(startingID INT)
@outputVal VARCHAR(20) OUTPUT 

  BEGIN
  DECLARE x INT;

  SELECT category_id INTO x FROM table2 Where product_id = startingID;
  SET outputVal = x;

  sloop:LOOP
      SELECT category_id INTO x FROM table1 WHERE parent_id = x;
      IF x IS NOT NULL THEN
          SET outputVal = outputVal + "," + x;
          ITERATE sloop;
      ELSE
          LEAVE sloop;
      END IF;  
  END LOOP;
  RETURN outputVal;
END $$

请检查拼写是否正确!!!
要获得结果,您需要:
选择getpath(123);
但是要小心:这个解决方案可能会以一个未结束的循环结束,而过程永远不会找到“null”!
希望我能帮忙!

相关问题