1

我有一张这样的桌子:

**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

4 回答 4

4

您需要执行自加入:

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上查看。

于 2012-10-12T08:34:35.543 回答
1

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

于 2012-10-12T08:32:04.587 回答
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 抽象)在 php 循环中处理来自查询的响应,将所需的内容保存在您自己的数组中,或者只是将此数组编码为 JSON。

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

于 2012-10-12T08:33:55.213 回答
0

假设您有 2 张桌子:

  1. product
  2. product_parent

然后,您运行如下查询:

SELECT product.name, product_parent.name
FROM product
INNER JOIN product_parent
ON product.product_parent_id=product_parent.id
于 2012-10-12T08:34:19.237 回答