我试图用它的孩子输出一个类别列表。 DB的设计者使得父类别可以具有相同的孩子ID
所以查询应该返回一个列表:
我试图在1个查询中执行此操作,因此我执行了以下操作:
SELECT DISTINCT c.*, pc.name as parentName
FROM Category as c
INNER JOIN Category as pc on c.parent_id = pc.id
WHERE c.building_id = 1
AND (
c.parent_id = -1
OR (
c.usingtemplate = 'true'
AND
pc.parent_id = -1
)
);
但是父母不在列表中
我这里有一个sql小提琴:http://sqlfiddle.com/#!7/75dd9/83
答案 0 :(得分:0)
执行 LEFT JOIN 可以解决问题
SELECT DISTINCT c.*, pc.name as parentName
FROM Category as c
LEFT JOIN Category as pc on c.parent_id = pc.id
WHERE c.building_id = 1
AND (
c.parent_id = -1
OR (
c.usingtemplate = 'true'
AND
pc.parent_id = -1
)
);