【发布时间】: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
-
任何一位数据库专家来帮助我????
-
请帮忙解决这个问题??