0

基本上我正在尝试与多个用户一起做一个程序,每个用户都发布自己的图片,同时允许用户关注另一个用户并查看该用户的文章。

我有数据库:

用户(用户 ID

图片(标题

发布者(用户ID_title

追随者(用户ID追随者ID_

现在,我正在尝试编写一个 SQL 来检索已登录用户发布的文章以及已登录用户关注的用户发布的文章。

我写的SQL是:

"SELECT * FROM pictures NATURAL JOIN users NATURAL JOIN posted_by NATURAL JOIN followers WHERE user-id = '" . $user-id . "' OR follower-id = '" . $user-id . "'";

现在,问题在于

WHERE user-id = '" . $user-id

这部分没有返回正确答案,因为关注者表中的 user-id 实际上并不代表该用户的 id,而是表示该用户关注的人的用户 id。

问题是:如何重组我的关注者表,使关注者用户 ID 和关注者用户 ID 都由用户表中的不同用户表示,这样我就可以在一个查询中获得我需要的图片?

4

2 回答 2

1

考虑到您现有的结构,

此查询将为您提供所需的输出。

select pst.userid, pic.title
    from pictures pic
      inner join posted_by pst on pic.title = pst.title
      left join followers flw on pst.userid = flw.userid
where pst.userid = <userid> or flw.followerid = <userid>

你可以在这里检查小提琴

于 2013-06-07T04:49:08.510 回答
0

我相信设计这个的最好方法是有一个表命名post为表的父表picturearticle(图片和文章有外键发布)。将常用字段放在帖子表中(如用户 ID 或日期),您可以使用它在一个非常简单的 SQL 中选择和排序您想要的所有帖子。

于 2013-06-07T03:16:30.113 回答