2015-11-26 235 views
0

我试图用它的孩子导出类别列表。 数据库的设计使得它使一个父类可以有一个孩子WebSQL选择孩子+父母

相同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

做一个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 
) 
);