2016-09-07 1 views

答えて

1

本質的には、自分のテーブルにJOINするだけです。

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 

これは、usersテーブルを子としてエイリアスし、同じテーブル(親とエイリアス)で結合します。

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

紹介関係が存在しない場合があり、その後、あなたはLEFTを使用することができますが、代わりに登録しよう:

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

次のクエリでは、自体テーブルを結合して、あなたがやりたいだろう。 TABLE_NAMEは、あなたのテーブルの名前です

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

関連する問題