PHP分层MYSQL查询
我试图对下面的数据库示例进行查询,如果某个特定ID的父项大于零,则回显该父项的名称 例如,当查询到达ID#5时,在父项下,我希望得到“Adidas”而不是“2”。现在我得到了父母的ID,但我想更进一步,检索父母的名字 数据库示例:PHP分层MYSQL查询,php,mysql,database,Php,Mysql,Database,我试图对下面的数据库示例进行查询,如果某个特定ID的父项大于零,则回显该父项的名称 例如,当查询到达ID#5时,在父项下,我希望得到“Adidas”而不是“2”。现在我得到了父母的ID,但我想更进一步,检索父母的名字 数据库示例: ID | PARENT | NAME ——————————————————————— 1 | 0 | Nike 2 | 0 | Adidas 3 | 1 | Jordan 4 | 1
ID | PARENT | NAME
———————————————————————
1 | 0 | Nike
2 | 0 | Adidas
3 | 1 | Jordan
4 | 1 | Bryant
5 | 2 | Rose
6 | 2 | Howard
下面是我正在执行的查询(因为我从两个表调用,所以有点复杂):
提前谢谢大家
$q="select cat1.* from categories cat1 inner join categories cat2 on cat1.PARENT=cat2.ID where cat2.ID=5"
您将从这个查询中得到一个想法。要从查询中获得所需的输出,在本例中,您需要使用主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
连接到自身
在这种情况下,重要的是您将从哪个别名获得父级的名称。由于第二个别名cat2的ID与第一个别名cat1匹配,您将获得第二个别名的父类别名称
希望它能对您有所帮助。是类别表还是产品表?您需要一个连接条件来关联表,否则您会得到一个完整的交叉产品。这是类别表。
产品
表在哪里?这真的与这个问题有关吗?@Barmar哦,好吧……我甚至不知道如何处理这个问题。对我来说是个新手,谢谢。为什么在第一行你说cat2
NAME
…既然我仍然在引用同一个表,那么它不应该是cat1
NAME
?好的,那么你使用的是cat2.NAME,因为你引用的是名为cat2的克隆表。顺便说一句,这是可行的。完美的
SELECT `cat1`.`ID` , `cat1`.`Parent` , `cat2`.`NAME`
FROM `categories` AS cat1
LEFT JOIN `categories` AS cat2 ON `cat2`.`ID` = `cat1`.`PARENT`