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

标签 php mysql sql

这是我的 table

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

等等...

餐 table 食谱

    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 别名链接到配方表才能获取名称,这就是我陷入困境的地方,因为我需要连接是子级或 ID,具体取决于猫是父级还是子级。我希望这是有道理的。

最佳答案

子查询来救援:

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

关于php - 当链接可以是父链接或子链接时查询生成父名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271773/

相关文章:

php - MySQL 事务 - 查询更改数据库而不提交?

mysql - 如何确定需要为此多连接多条件查询创建哪个索引?

sql - 选择所有关系数据中具有特定列值的行

mysql - SQL - 根据列值删除所有表中的行

php - 添加 PHP 条件时 CSS 不适用于 div

php - 如何编写一个程序来逐个字符连接两个字符串。例如 : JOHN + SMITH = JSOMHINTH

php - 如何更快地将mysql数据加载到jquery数据表中

php - 如何使用Join查询两个表的数据

mysql - 无法在 AWS RDS 上创建数据库安全组

mysql - 如何创建 gpa 或 cgpa 触发器?