我正在尝试对下面的数据库示例进行查询,如果某个特定ID的父级大于零,则回显该父级的NAME。
例如,当查询达到ID#5时,在PARENT下我想得到“Adidas”而不是“2”。现在我得到了父母的身份证,但我想更进一步,找回父母的姓名。
数据库示例:
ID | PARENT | NAME
———————————————————————
1 | 0 | Nike
2 | 0 | Adidas
3 | 1 | Jordan
4 | 1 | Bryant
5 | 2 | Rose
6 | 2 | Howard
以下是我正在执行的查询(由于我从2个表调用,它有点复杂):
$q = "SELECT `categories`.`ID`, `categories`.`Parent`, `categories`.`NAME`,
`products`.`ID` as `ID2`, `products`.`NAME`
FROM `categories`, `products`";
提前谢谢大家。
答案 0 :(得分:1)
要从查询中获取所需的输出,您需要在这种情况下使用SELF JOIN作为主ID和父ID都在同一个表中。
查询将是
SELECT `cat1`.`ID` , `cat1`.`Parent` , `cat2`.`NAME`
FROM `categories` AS cat1
LEFT JOIN `categories` AS cat2 ON `cat2`.`ID` = `cat1`.`PARENT`
通过创建别名cat1
和cat2
,类别表已加入自身。
在这种情况下,重要的是从哪个别名获取Parent的名称。由于第二个别名cat2的ID与第一个别名cat1匹配,您将获得具有第二个别名的父类别名称。
希望这对你有帮助。
答案 1 :(得分:0)
$q="select cat1.* from categories cat1 inner join categories cat2 on cat1.PARENT=cat2.ID where cat2.ID=5"
您将从此查询中获得一个想法。