2016-09-07 22 views
0

得到另一個專欄中,我有一個表的設置是這樣的:使用SELECT來獲得ID,然後從另一行

id (INT) | display_name (VARCHAR) | referral (INT) 

轉診轉介用戶的ID。有沒有一種方法可以提取引薦ID,然後使用它在一次調用中獲取引用成員的display_name?或者兩個獨立的電話更容易處理?

回答

1

本質上,你需要做的就是加入你自己的表格。

SELECT child.*, parent.display_name AS referral_name 
    FROM users AS child 
     JOIN users AS parent ON child.referral = parent.id 
    WHERE child.id = 2 

這個別名用戶表作爲孩子,然後加入同一個表(別名爲父母)。

+----+--------------+----------+---------------+ 
| id | display_name | referral | referral_name | 
+----+--------------+----------+---------------+ 
| 2 | Jim   |  1 | Tim   | 
+----+--------------+----------+---------------+ 

如果轉診關係可能不存在,那麼你可以使用LEFT JOIN代替:

SELECT child.*, parent.display_name AS referral_name 
    FROM users AS child 
     LEFT JOIN users AS parent ON child.referral = parent.id 

+----+--------------+----------+---------------+ 
| id | display_name | referral | referral_name | 
+----+--------------+----------+---------------+ 
| 1 | Tim   |  NULL | NULL   | 
| 2 | Sam   |  1 | Tim   | 
| 3 | Kimberly  |  1 | Tim   | 
+----+--------------+----------+---------------+ 
+0

太棒了。謝謝! –

0

下面的查詢會做你想要通過什麼加入表與本身

select t2.display_name from table_name t1 join table_name t2 on t1.referral=t2.id 

其中table_name的是你的表的名稱。

相關問題