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を使用して1つのクエリでそれを行うことは可能ですか?

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、結果に 1 つのレコードを識別できるようにする場合は、結果に含めることをお勧めします。

于 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 に答える