所以我正在制作一个内部网/网站,它将向用户订阅的群组显示最新的“帖子” 如何(仅在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
答案 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';