【问题标题】:Finding users with search keywork and return result with order by mutial friends使用搜索关键字查找用户,并根据共同好友的顺序返回结果
【发布时间】:2016-02-01 12:52:38
【问题描述】:

我正在构建一个需要高级用户搜索的应用程序,例如高级社交网络搜索...

Table sl_users 
user_id | full_name | etc
Table sl_user_friends
friend_id | user_id_FK | user_friend_id | accept_status

我的查询是这样的

SELECT * FROM (

SELECT user_id , full_name ,
(SELECT COUNT( * ) 
FROM (

        SELECT CASE WHEN user_id_FK = users.user_id
        THEN user_friend_id
        ELSE user_id_FK
        END AS friendID
        FROM sl_user_friends
        WHERE user_id_FK = users.user_id
        OR user_friend_id = users.user_id
        )a
        JOIN (

        SELECT CASE WHEN user_id_FK =3
        THEN user_friend_id
        ELSE user_id_FK
        END AS friendID
        FROM sl_user_friends
        WHERE user_id_FK =3
        OR user_friend_id =3
        )b ON b.friendID = a.friendID) as mutial_friend

    FROM sl_users

    ) AS users

我想要这样的结果,但是这个查询不起作用。

user_id |全名 | mutial_friend 1阿里11 3 诺曼 10 4 xyz 9

如果我是用户 3 并且 4 是我的朋友,那么我也是 4 的朋友。 这个查询给了我类似

的错误
#1054 - Unknown column 'users.user_id' in 'field list' 

【问题讨论】:

  • 您是否尝试过在内部查询中使用sl_users 而不是users?我猜最后一行给出的名称在那里不可用,所以使用原始表名。
  • 你可以使用join查询来获取输出。
  • 是的,我也尝试过使用原始名称,但在可以让我的共同朋友获得的嵌套查询中说未知 user_id
  • 任何一位数据库专家来帮助我????
  • 请帮忙解决这个问题??

标签: php mysql database mysqli


【解决方案1】:

对您的数据库使用以下查询。未经测试,但我希望它对你有用。

select user_id,full_name from sl_users sl left join sl_user_friends slf on slf.user_id_FK=sl.user_id

【讨论】:

  • 我不只获取 user_id 和 full_name 它可以检查共同的朋友并计算他们,然后用这个计数器订购他们
  • 是的,您可以根据需要修改查询。这只是从两个表中获取公共数据的基本查询。
猜你喜欢
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
相关资源
最近更新 更多