如何联接具有多个条件的3个MYSQL表,即使第3个表中没有数据

时间:2018-11-16 21:04:42

标签: mysql left-join inner-join outer-join jointable

“我的新项目”类似于博客卷,用户可以在其中关注其他用户。

在列出所有帖子的同时,每个帖子下方都有一个用于关注/取消关注的按钮。

使用的表是用户,帖子和关注者。如下:

用户表

id       firstName     lastName
.....................................
1        arun          prasanth
2        ann           antony
3        sruthy        abc
6        John          abc

POSTS表

id    user_id   postname    url
.....................................................
1     2         post1       www.url1.com
2     2         post2       www.url2.com
3     6         post3       www.url3.com
4     3         post4       www.url4.com

关注者表

id     user_id    following_users_id    date
..............................................
1     2          1                     2018-01-25
2     2          3                     2018-01-25
3     6          3                     2018-01-25
4     3          6                     2018-01-25

列出我查询的所有帖子

SELECT * FROM posts LEFT JOIN users on posts.user_id = users.user_id;

,它工作得很好,因为两个表都有对应的行,结果是列出了所有数据的两个表列。

现在我的问题是加入第三个表(即关注者表)时。 Followers表的问题在于,它只有一行,该行对应于当前登录的用户user_id和followers.user_id。

我尝试了所有类似LEFT RIGHT INNER和OUTER JOIN的变体。但没有成功。

我想要的结果是:

user.id                         -> xxx
user.firstName                  -> xxx
user.lastName                   -> xxx
posts.id                        -> xxx
posts.user_id                   -> xxx
posts.postname                  -> xxx
posts.url                       -> xxx
followers.id                    -> xxx
followers.user_id               -> **Logged IN Users ID**
followers.following_users_id    -> **posts.user_id**
followers.date                  -> xxx
仅当 followers.user_id ===登录用户ID followers.following_users_id ===时,才应打印

followers.id,followers.user_id,followers_following_users_id,followers.date = posts.user_id 为true。否则这些列应为空白。

如上所述,我是否可以使用诸如foreach循环之类的方法来检索数据?

0 个答案:

没有答案