我有两张表comments
和comments_liked
。用户(viewer_id
)可以喜欢(UID
)撰写的评论。评论存储在评论表中,喜欢的评论存储在 comments_liked 表中(如附图所示)。
**我想做什么:
如果在 comments_liked 表中找到(viewer_id
)作为其ID的用户正在查看他们的个人资料,他们应该会看到他们喜欢/给予的任何评论user(UID),仅当评论表中不存在评论时,uid = uid
请不要混淆,因为我不想在uid = uid上显示所有评论。
以下是我在php中的代码
请注意:如果我们不能说where comments_liked.uid != comments.uid
,那么会在评论表中显示所有其他值。
$query = "
SELECT * FROM comments_liked
INNER JOIN comments ON uid = comments.uid
WHERE uid = ?
AND viewer_id = ?
";
但是我的代码只打印commnets_liked.uid = comments.uid
的记录,这与我想要的相反。
所以,如果我是用户1,我需要查看来自comments_liked
的记录,其中viewer_id = 1,因为comments
表中不存在该记录。
感谢您的帮助!
答案 0 :(得分:1)
您需要知道哪个评论是合适的。
在这种情况下,comments_liked
表是关于评论的,所以它不应该(至少不一定)包含发布评论的用户的uid
,而是它应该有评论本身的comment_id
。
毕竟,如果用户100有五条评论,而用户200只喜欢其中一条评论,那么您只想看到一条评论,而不是全部五条评论。
完成后,您可以选择用户喜欢的所有评论:
SELECT
c.comment,
authors.username AS comment_author
FROM
comments_likes cl
INNER JOIN comments c ON c.id = cl.comment_id
INNER JOIN users authors ON authors.id = c.uid
WHERE
cl.viewer_id = ?
所以你可以看到:
cl
)或可以包含一些上下文(authors
,表明这些用户是查询上下文中的作者)。