2012-10-12 157 views
0

我有這樣的一個表:父子關係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與一個查詢做呢?

回答

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

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 

那之後,你將通過項目(數組或返回數組處理來自PHP循環您的查詢的響應對象的 - 取決於你使用的是什麼MySQL抽象),將需要保存在你自己的數組中,或者只是將這個數組編碼爲JSON。

注意:我不知道你需要什麼,但在結果中包含table.id是個不錯的主意,如果你希望後者能夠識別一條記錄。

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