我正在使用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查询,可以评估它是父母还是孩子,然后拉出相应的行将非常感激。
提前致谢。
答案 0 :(得分:1)
您的问题陈述不太确定,但您可以将WHERE
条件修改为如下所示
WHERE (Child IS NOT NULL AND parent = 4)
OR COALESCE(child, 4) = 4