2015-05-12 115 views
0

我有2個表,一個用戶的表和一個朋友表。對於當前用戶的朋友和非朋友的用戶的MySql查詢

users 
__________ 
user_id p.k 
username 

friends 
__________ 
from_user 
to_user 
status ENUM('1', '2') //1 for sent/pending, 2 for accepted 
primary key('from_user', 'to_user') // both also reference user_id 

我是比較新的MySQL和一直在試圖創建,將搜索基於用戶名和用戶名返回,USER_ID行通配符%%搜索查詢,而人是地位這兩個朋友和非朋友都以當時用戶的順序限制爲10人。我將不勝感激任何關於此事的幫助和指導。以下是我到目前爲止。

SELECT Users.user_id, Users.username, Friends.status 
FROM Users 
LEFT JOIN 
Friends ON 
    Users.user_id IN Friends.to_user, Friends.from_user AND 
    'id of user' IN Friends.to_user, Friends.from_user 
WHERE 
+0

什麼疑問有你試過了嗎?請將它們添加到問題中,並詳細說明這些查詢具有的問題。 – Cristik

+0

@Cristik我還沒有得到一個完整的查詢工作,我是一個新手,所以我不知道如何完全執行這樣的查詢 –

+0

沒關係,發佈你有什麼,並告訴我們你在哪裏被阻止。 – Cristik

回答

0

試試這個,讓朋友鏈接:

select uf.user_id, uf.username, f.status 
from users u 
join friends f on u.user_id = f.from_user 
join users uf on f.to_user = uf.user_id 
where u.username like '%teddy%' and f.status = 2 
LIMIT 10; 

,這讓所有的可能的聯繫,朋友,發送/待定,而不是朋友:

select uf.user_id, uf.username, f.status 
    from users u 
    left join friends f on u.user_id = f.from_user 
    left join users uf on f.to_user = uf.user_id 
    where u.username like '%teddy%' 
    LIMIT 10; 
+0

我試過了,並將短語更改爲我已保存的用戶名,但我沒有收到任何回覆 –

+0

您有2張表中的數據嗎?因爲在查詢中,你粘貼的問題使用左連接....如果我不是你的朋友是你的數據我有一個表上的朋友狀態'不是朋友'的記錄? – bugs2919

+0

你的第二個查詢效果很好,但是有什麼方法可以修改它,所以它只返回3個字段:user_id,用戶名和與當前用戶相關的人的狀態,而不返回查詢中的當前用戶? –