[英]PHP MySQL Search for users by mutual friends and country
我正在開發一種社交網絡。 今天,我開始使用AJAX和php制作動態搜索欄。 在中,我有一個查詢,用於在“用戶”表中搜索用戶。 如果您知道我的意思,我想按相關性排序搜索結果。 例如,如果我有一個ID為3的用戶,在搜索John,我想按共同朋友的數量以及該人的住所對結果進行排序。 我的桌子看起來像這樣
用戶數
id | 名稱| 國家
友人
id | user_id | friend_id
我目前的疑問是
SELECT * FROM users WHERE name LIKE $keyword
供用戶搜索
和
SELECT COUNT(*) as mutual from users where id in
(select friend_id from friends where user_id = 3 and friend_id in
(select friend_id from friends where user_id = 7)
例如,這將返回用戶3和用戶7之間的共同朋友數。
如何將兩者結合起來才能提供更相關的搜索結果?
先感謝您!
例如,如果我有一個ID為3的用戶,在搜索John時,我想按共同朋友的數量對結果進行排序
在我的朋友中,按共同朋友的數量查找名字包含“ john”順序的朋友:
select u.*, count(f1.user_id) as num_mutual_friends
from friends f1 -- my friend
join friends f2 on f2.user_id = f1.friend_id -- friend of my friend
join users u on u.id = f2.friend_id
where f1.user_id = 3
and u.name like '%john%'
and u.id <> 3
group by u.id
order by num_mutual_friends desc;
首先顯示來自美國的用戶:
order by (u.country = 'us') desc, num_mutual_friends desc;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.