父子关系PHP和MYSQL

时间:2012-10-12 08:27:44

标签: php mysql sql join

我有一张这样的表:

**id     name     parent_id**
1       X         2 
2       Y         2
3       Z         1
4       A         5
5       B         6
6       C         1


I want output look like this: 
**name       *parent name***
X           Y
Y           Y
Z           X
A           B
B           C
C           X

是否可以使用JOIN进行一次查询?

4 个答案:

答案 0 :(得分:3)

您需要执行自我加入:

SELECT child.name AS `name`, parent.name AS `parent name`
FROM   my_table AS child JOIN my_table AS parent ON parent.id = child.parent_id

sqlfiddle上查看。

答案 1 :(得分:0)

select son.name as name, father.name as parent_name from table_name as son left join table_name as father ON son.parent_id = father.id

答案 2 :(得分:0)

您可以使用JOIN执行此操作

示例:

SELECT
    table.name
    , parent.name as parent_name
FROM
    table
LEFT JOIN
    parent ON parent.parent_id = table.parent_id
WHERE
    table.visible = 1

之后,您将通过返回的项目数组(数组或对象 - 依赖于您使用的MySQL抽象)处理来自查询的响应,在您自己的数组中保存所需的数据,或者只是将此数组编码为JSON

注意:我不知道您需要什么,但如果您希望后者能够识别一条记录,最好在结果中包含table.id

答案 3 :(得分:0)

假设你有两张桌子:

  1. product
  2. product_parent
  3. 然后,您运行如下查询:

    SELECT product.name, product_parent.name
    FROM product
    INNER JOIN product_parent
    ON product.product_parent_id=product_parent.id