MYSQL仅在用户订阅组时显示帖子

时间:2014-05-12 12:34:33

标签: mysql join

所以我正在制作一个内部网/网站,它将向用户订阅的群组显示最新的“帖子” 如何(仅在mysql中)选择用户订阅的组的帖子?

我目前的代码是:

SELECT posts.groupid, groups.groupid, mygroups.groupid
FROM posts, groups, mygroups
WHERE posts.groupid = mygroups.groupid

所以,我只希望mysql返回用户订阅的所有帖子。 因此,如果user1是group1的订户而不是group2,那么mysql将只返回group1帖子。

表格结构:

---Posts:---
postid
groupid
postmessage
postowner
postdate

---groups:---
groupid
owner
groupname
groupyear

---mygroups:---
userid
groupid

---users:---
id
username
password
email
realname
lastip
role
avatarurl
pushid

4 个答案:

答案 0 :(得分:0)

这应该有效,给定一个用户ID:

SELECT groupid, postid
FROM mygroups
JOIN posts USING (groupid)
WHERE userid = <user id goes here>

答案 1 :(得分:0)

您必须使用内部联接:

SELECT postid, postmessage 
FROM posts 
INNER JOIN mygroups 
ON posts.groupid = mygroups.groupid 
WHERE mygroups.userid = *theUsersUserId*

答案 2 :(得分:0)

对我来说,这看起来很简单,并且通过两个内连接来实现。尝试

SELECT a.userid, b.postid
FROM users a, posts b, mygroups c
WHERE b.userid=a.id
AND   c.groupid=b.groupid

答案 3 :(得分:0)

您的基本查询将类似于:

SELECT * FROM posts INNER JOIN mygroups ON posts.groupid=mygroups.groupid;

然后您可以在WHERE子句中由用户进行过滤。

SELECT * FROM posts INNER JOIN mygroups ON posts.groupid=mygroups.groupid WHERE userid='user1';