我正在使用 PHP 根据父/子关系动态地将另一个表添加到页面。
我已经大大简化了事情,所以假设我有一个表“FAMILY”,其中包含三列 Parent Int(6)、Child varchar(15) 和 Fname varchar(25)。该表有四行,其值为: 第 1 行:4,NULL,比尔 第 2 行:5、4,汤姆 第 3 行:6、NULL、弗兰克 第 4 行:7、4、山姆
正如您所知,汤姆和弗兰克是比尔的 child 。所以比尔是汤姆和山姆的 parent 。
无论我当前正在查看谁的记录,我都希望能够动态地查看其他关联的记录。忘记 PHP 部分吧,我已经可以工作了。我只需要 MySQL 查询。
在我看来,我需要一个查询来根据 child 的值执行两项不同的操作。 1:如果子项为 NULL(或空白),如第 1 行中所示,我需要它根据父项值 4 返回第 2 行和第 4 行。换句话说,我正在查看父项。 2) 如果 Child 不为 NULL,如第 2 行和第 4 行所示,我需要它返回第 1 行和另一行第 2 行或第 4 行,具体取决于我正在查看哪个子项。现在我正在查看 child 记录。
SELECT * FROM FAMILY WHERE
CASE WHEN Child IS NOT NULL then parent = 4
WHEN child IS NULL then child = 4
END
GROUP BY PARENT
我很确定我错误地使用了 CASE/WHEN,但在尝试了大约一千种方法后,我放弃了,需要寻求帮助。
请提供一个可以评估它是父项还是子项然后提取适当行的 MySQL 查询,我们将不胜感激。
提前致谢。
最佳答案
从您的问题陈述中不太确定,但您可以将 WHERE
条件修改为如下所示
WHERE (Child IS NOT NULL AND parent = 4)
OR COALESCE(child, 4) = 4
关于php - 带 CASE/WHEN 或开关的父/子 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279636/