2012-02-05 37 views
0

我有兩個表內的數據庫。 One將唯一的用戶名和一個獨特的ID和其他賣場,從上表的用戶是「朋友」:例如:MySQL查詢。無法管理得到它

table users: 
id | username 
--------------- 
100 | aaa 
200 | bbb 
300 | ccc 

table friends: 
id | user | friend 
------------------- 
1 | 100 | 200 
2 | 300 | 100 
3 | 300 | 200 

就像上面的例子中,用戶100是和朋友300還200 我想要顯示包含所有用戶100個朋友的列表。請記住,他可以出現在兩列(用戶和朋友)的「朋友」表中。無法弄清楚查詢應該如何。我嘗試的一切,它重複行和whatnot。

我知道這是微不足道的,但我是新來的。

+0

小號像'SELECT * FROM friends where user = 100 or friend = 100'這樣的東西' – Aziz 2012-02-05 11:27:34

+1

它會被複製爲用戶100個字段的朋友是manytomany表。您將不得不使用group by作爲用戶字段,並使用friends字段中的group_concat將它們放在一行中。歡呼 – 2012-02-05 11:43:43

回答

1

這將沒有重複的工作

SELECT distinct id FROM(
SELECT friend as id FROM friends 
WHERE user = 100 
UNION ALL 
SELECT user as id FROM friends 
WHERE friend = 100) ; 
+0

大聲笑,我有困難轉換你的符號到我的... :) – AndreiBogdan 2012-02-05 11:47:32

+1

我不明白是什麼意思「將你的符號轉換爲我的」! – zambotn 2012-02-05 12:57:00

+0

如果您刪除「全部」,內部選擇將單獨工作。 – Bohemian 2012-02-05 19:22:06

1

試試這個:

Select distinct u.id, u.username 
    from Users u 
    inner join Friends f on u.id = f.id 
    where f.friend = 100 
UNION ALL 
Select distinct u.id, u.username 
    from Users u 
    inner join Friends f on u.id = f.id 
    where f.user = 100 

或者:

Select distinct u.id, u.username 
    from Users u 
    inner join Friends f on u.id = f.id 
    where f.user = 100 or f.friend = 100 
1

嘗試如下:

Select distinct u.id, u.username 
from Users as u 
left join Friends as f on (u.id = f.user or u.id = f.friend) 
where u.id=100