当链接可以是父级或子级时,查询以生成父级名称

时间:2014-06-17 19:22:17

标签: php mysql sql

这是我的表

    table category
    id   catname   childof  isParent
    1    name1       0        yes
    2    name2       1        no

等...

表食谱

    id   name      cat
    1    recipe1    1
    2    recipe2    2

表之间的唯一链接是引用category.id的recipe.cat。我需要一个MySQL脚本来显示这个:

    recipe.name    parent category name
    recipe1             name1
    recipe2             name1

所以我需要它来查找使用父名称(如果它是父项或父项的子项)。我可以创建一个脚本来查找父ID:

SELECT catname, isparent, id, childof,
case isParent
when 'no' then childof
else id
end as newid
FROM category

这给了我父ID但不是名字。我需要将newid别名链接到配方表以获取名称,这是我被卡住的地方,因为我需要连接是childof或ID,具体取决于cat是父级还是子级。我希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

拯救的子查询:

SELECT a.name AS recipe_name, 
CASE b.isParent
    WHEN 'no'
    THEN (SELECT catname FROM category WHERE id = b.childof)
    ELSE b.catname
END AS category_name
FROM recipe AS a, category AS b
WHERE a.cat = b.id

返回:

recipe_name | category_name
------------+---------------
recipe1     | name1
recipe2     | name1

答案 1 :(得分:0)

第二个查询,您可以使用您获得的ID查询该类别的名称吗?