首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索我不遵循LeftJoin Sql的用户的帖子

检索我不遵循LeftJoin Sql的用户的帖子
EN

Stack Overflow用户
提问于 2018-03-14 19:37:06
回答 3查看 40关注 0票数 0

我有三个表:用户,社区和帖子。

我想检索乔不遵循(id_user=1)的用户的帖子

用户

代码语言:javascript
复制
    id_user  |  name
       1        Joe
       2        Doe
       3        Moe
       4        Roe
       5        Clin

社区

代码语言:javascript
复制
  id_follower | id_followed
       1            3
       1            5

发布

代码语言:javascript
复制
    id_post   | id_user | post  
      24            4       hi
      25            5       hello
      26            1       how are you
      27            3       come on
      28            4       let go
      29            2       get out

我想要找回的是

代码语言:javascript
复制
      24            4       hi - by Roe
      28            4       let go  - by Roe
      29            2       get out  - by Doe     

我试过了但不起作用

代码语言:javascript
复制
SELECT p*
FROM community as c
LEFT JOIN users as u ON u.id_user=c.id_followed
LEFT JOIN posts as p ON p.id_user!=c.id_followed 
WHERE c.id_follower=1 AND u.id_user!=1 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-14 19:57:36

这应该是可行的:

代码语言:javascript
复制
select * from Posts 
where id_user not in
(select id_followed from Community where id_follower = 1)
票数 1
EN

Stack Overflow用户

发布于 2018-03-14 19:59:06

只要给出一个答案就没有意义了,让我们跨过逻辑。还有其他方法可以这样做,但是既然你问了左联接,我就像左连接一样做。从岗位开始..。

代码语言:javascript
复制
from posts p

让我们离开加入社区

代码语言:javascript
复制
left join community c on c.id_followed = p.id_user and ID_follower = 1

这现在给出了所有帖子以及社区id_followed record...if的列表--社区的记录为空,然后是来自用户的-- joe不遵循。因为我们只想要记录乔不跟著

代码语言:javascript
复制
where c.id_followed is null

我们将向用户添加一个连接,以获取海报名称,并将其全部放在一起。

代码语言:javascript
复制
from posts p
left join community c on c.id_followed = p.id_user and ID_follower = 1
left join users u on u.id_user = p.id_user
where c.id_followed is null  

最后,将select行放在一起以获取您想要的字段,使用concat按名称格式获取post。

代码语言:javascript
复制
select p.id_post, p.id_user,  concat(p.post  , ' by ', u.name)

把它放在一起快跑!

票数 1
EN

Stack Overflow用户

发布于 2018-03-14 19:52:34

您可以在not in上使用内部连接。

代码语言:javascript
复制
select p.*
from  Posts p 
inner join (
  select id_user form community 
  where id_user  not in (
   select id_followed
   from community 
   where id_follower =1
  )
) t  on p.id_user = t.id_user and p.id_user <>1 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49286367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档