我知道这可以使用脚本语言来完成,但是根据我的要求进行一次SQL调用会很棒。我需要选择所有类别和产品的父类别
说我有这两张桌子。
TABLE 1:categories
|| category || categoryid ||
===========================
|| fightercraft || 5
|| spaceship || 10
|| ships || 3
和
TABLE 2:catrelationships
category || parentcategory
===========================
5 || 10
10 || 3
3 ||
我的限制是我只能将一个参数传递给第一个表类别的查询。我知道我有一个战斗机类别,我需要将父类别全部放在一个列中。
Select categories.category,catrelationships.category from categories
JOIN categories on catrelationships.category=categories.id
where categories.id=5
需要以某种方式返回!
RESULT
|| product || category
|| fightercraft || 5
|| spaceship || 10
|| ships || 3
有人能引导我朝着正确的方向前进吗?
答案 0 :(得分:0)
可能有更好的方法,但如果您愿意承担嵌套类别深度的限制,以下内容应该符合您的要求:
SELECT p.product
, c2.product AS category
FROM products p
JOIN (
SELECT c1.category AS c1
, c1.parentcategory AS c2
, c2.parentcategory AS c3
, c3.parentcategory AS c4
FROM categories c1
LEFT JOIN categories c2 ON c1.parentcategory = c2.category
LEFT JOIN categories c3 ON c2.parentcategory = c3.category
) c ON p.category = c.c1
JOIN categories c2 ON c2.category IN (c.c1, c.c2, c.c3, c.c4)
ORDER BY p.product ASC, c2.category DESC;
上述查询假设最大嵌套深度为4个类别。您可以根据需要调整深度。