修改SQL查询以返回用户自己的帖子?

时间:2014-01-04 20:34:39

标签: php mysql sql

目前,查询工作正常,并按照预期执行。但是,我想更改查询,以便除了其他帖子之外还检索用户自己的帖子。我怎样才能做到这一点?我尝试了OR P.author = $_SESSION['username']之类的内容,但似乎这会导致每个用户自己的帖子多次回显。

$gtPsts = "SELECT P.id, P.subid, P.author, P.post, P.access, P.date, F.friends, F.following, F.f1, F.f2, F.status 
    FROM posts AS P, friends AS F 
    WHERE (F.f1 = '$_SESSION[username]' AND F.f2 = P.author AND F.status = 1 AND P.access = 'Public' OR P.access = 'Friends') 
    OR (F.f2 = '$_SESSION[username]' AND F.f1 = P.author AND F.status = 1 AND P.access = 'Public' OR P.access = 'Friends') 
    OR (F.f1 = '$_SESSION[username]' AND F.f2 = P.author AND F.following = True AND P.access = 'Public' OR P.access = 'Following') 
    ORDER BY P.date DESC LIMIT 20";

表的结构如下:id (int)subid (int)author (varchar)post (longtext)access (varchar)date (datetime)

1 个答案:

答案 0 :(得分:0)

你得到了用户'多次拥有帖子,因为查询会加入您的两个表postsfriends。因此,如果您对(P.author = $_SESSION['username'])进行过滤,则会将posts中的一个与friends表中的每个项目一起获得。

您可以使用变通方法。如果您的friends表格包含主要/唯一密钥,请说id,您可以使用OR (P.author = '$_SESSION[username]' AND F.id = (SELECT id FROM friends LIMIT 1))。必须有一种更高效的方式,但这应该已经有所帮助了。