过去3个小时我一直坚持使用这个简单的Sql查询,我的想法是空白。
我有一个用户表来捕获名称user_id等 然后我有一个朋友表,捕捉谁是谁的朋友和他们的状态
用户
USER_ID
名称
朋友
friend_id
USER_ID
user_friend_id
状态(已加入,待决等)
我想要做的是 - 当登录用户搜索名称“John”时 - 显示网站上所有johns的列表以及每个John旁边的一个列表 - 使用friends表进行查找以查看是否记录存在 - 即,如果登录的用户是任何约翰的朋友
所以我应该先在User表上运行一个查询,例如从User中选择user_id,其名称为'John%',然后使用这些Id并在Friends表中运行它们。
我无法得到它。 感谢
答案 0 :(得分:2)
您从符合您的标准的所有用户开始(我不确定确切的MySQL语法):
SELECT u.user_id
FROM User u
WHERE u.name LIKE '%John%'
这为您提供了所有目标用户。接下来,您需要Friend
表上的外部联接,您可以将结果限制为当前登录的用户:
SELECT u.user_id, f.status
FROM user u
LEFT OUTER JOIN Friend f ON f.friend_id = u.user_id
WHERE f.user_id = <currentUserId> AND u.name LIKE '%John%'
您得到的是一个结果集,其中包含名为John的所有用户的用户ID以及状态标志为null或实际状态。如果它是null,你有一个潜在的新朋友,如果没有,你有一个现有的朋友。
答案 1 :(得分:1)
这样的事情可能会让你开始。
SQL语句
SELECT u.name, COALESCE(f.Status, 'Add Friend')
FROM User u
LEFT OUTER JOIN Friend f ON f.User_ID = u.User_ID
WHERE u.name = 'John'
答案 2 :(得分:1)
以下查询必须解决您的问题
select a.user_name,case when a.user_name like 'John%' then b.status else 'Add Friend' end case from users_det a,friend b where a.user_id = b.user_id