使用CASE / WHEN进行父/子MySQL查询或切换

时间:2015-08-28 20:55:22

标签: php mysql switch-statement

我正在使用PHP根据父/子关系动态地向页面添加另一个表。

我已经大大简化了一些事情,所以假设我有一个表'FAMILY',其中有三列Parent Int(6),Child varchar(15)和Fname varchar(25)。该表有四行,其值为;     第1:4行,NULL,比尔     第2行:5,4,汤姆     第3行:6,NULL,弗兰克     第4行:7,4,Sam

你可以告诉汤姆和弗兰克是比尔的孩子。比尔是汤姆和萨姆的父母。

无论我目前正在查看谁的记录,我希望能够动态地查看其他相关记录。忘记PHP部分,我有这个工作。我只需要MySQL查询。

我看到它的方式,我需要一个查询,根据child的值,它将执行两个不同的事情。 1:如果Child在行1中为NULL(或空白),我需要它根据父值4返回第2行和第4行。换句话说,我正在查看父级。 2)如果Child不是NULL,如第2行和第2行4,我需要它返回第1行和另一行2或4,这取决于我正在看哪个孩子。现在我正在看儿童纪录。

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查询,可以评估它是父母还是孩子,然后拉出相应的行将非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的问题陈述不太确定,但您可以将WHERE条件修改为如下所示

 WHERE (Child  IS NOT NULL AND parent = 4)
 OR COALESCE(child, 4) = 4