我有這樣的一個表:父子關係PHP和MYSQL
**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與一個查詢做呢?
我有這樣的一個表:父子關係PHP和MYSQL
**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與一個查詢做呢?
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
您可以使用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
那之後,你將通過項目(數組或返回數組處理來自PHP循環您的查詢的響應對象的 - 取決於你使用的是什麼MySQL抽象),將需要保存在你自己的數組中,或者只是將這個數組編碼爲JSON。
注意:我不知道你需要什麼,但在結果中包含table.id
是個不錯的主意,如果你希望後者能夠識別一條記錄。
比方說,你有2個表:
product
product_parent
然後,你運行一個查詢是這樣的:
SELECT product.name, product_parent.name
FROM product
INNER JOIN product_parent
ON product.product_parent_id=product_parent.id
您需要進行自我加入:
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。