2014-04-02 60 views
0

所以我有用戶表從同一個表中選擇另一個用戶

一些用戶是「所有者」 的用戶可以有一個老闆

現在我要選擇從用戶的所有者(無論在同一個表)

實施例: 擁有者:

user_id: 34 
user_name: hiimowner 
user_owner_id: NULL 

用戶:

user_id: 63 
user_name: randomperson 
user_owner_id: 34 

現在我正在尋找正確的SQL查詢,以便能夠找到所有者的user_name

所以,如果我可以申請的「randomperson」,它應該返回「hiimowner」

+0

你嘗試過什麼了嗎?如果是,請在此分享。 –

回答

2
主人
SELECT * FROM table AS t1 
JOIN table AS t2 
ON t1.user_id = t2.user_owner_id 
WHERE t2.user_id = 63 
+0

這個結果讓我回來了2個user_names我自己和所有者 如何從我的結果中獲得第二個? $ result ['user_name'] – PrivateerGerrit

+1

** SELECT t2.user_id,t2.user_name,t2.user_owner_id,t1.user_id AS owner_user_id,t1.user_name AS owner_user_name,t1.user_owner_id AS owner_user_owner_id FROM ... **其餘部分是相同。或者簡單地說** SELECT t2。* FROM ... **也可以做到這一點。 – blue

3

試試這個,

Select u.*,o.user_name from User as u 
left join User o on o.user_id = u.user_owner_id 

如果要過濾特定記錄再加入where子句,

Select u.*,o.user_name from User as u 
left join User o on o.user_id = u.user_owner_id 
where u.user_id = 63 
+0

業主不是一張桌子。所有者是用戶,並存儲在用戶表中。 –

+1

是的,現在我明白了,我正在改變我的答案。 – AK47

3

你要找的訣竅是自連接:

SELECT o.username 
FROM users o 
JOIN users u ON u.user_owner_id = o.user_id 
WHERE u.user_name = 'randomperson' 
+0

這個和藍色的答案都是正確的,但最好用明確的名稱命名錶別名 - 並且「o」是一個比「t2」更好的名稱來命名所有者別名。 –

相關問題