这个问题在这里已有答案:
我有两张桌子comments
和comments_liked
。用户(viewer_id
)可以喜欢(UID
)撰写的评论。注释存储在注释表中,喜欢的注释存储在comments_liked表中(如附图所示)。 **我想做什么:
当在comments_liked表中找到(viewer_id
)作为其id的用户正在查看他们的个人资料时,他们应该看到他们喜欢/给予用户的任何评论(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
表中不存在。
谢谢你的帮助!
您需要知道哪个评论是合适的。
在这种情况下,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
,表示这些用户是查询上下文中的作者)。