gpt4 book ai didi

php - MYSQL 选择多对多

转载 作者:行者123 更新时间:2023-11-28 23:59:20 25 4
gpt4 key购买 nike

我正在处理两个表:评论、用户

评论表有一个包含用户 ID 的收件人字段

现在我们必须将评论/收件人更改为多对多关系,因为多个用户可以收到相同的评论,所以我添加了一个链接表,comment_recipient

但是,现在我不确定在选择评论时如何选择收件人列表

我不确定如何根据特定收件人选择评论

这是我现在拥有的:

$sql = "SELECT c.*, [RECIPIENTS]
FROM comment AS c
JOIN user AS u2 ON c.sender = u2.id
WHERE c.type<=?";
if(isset($args['location'])) $sql .= " AND u2.location=?";
if(isset($args['userId'])) {
if(isset($args['given'])) {
$sql .= " AND c.sender=?";
}else {
$sql .= " AND c.recipient=?"; //need to see if in recipient list now?
}
}

编辑:

感谢 Barry 的回答,我现在得到了这个:

$sql = "SELECT c.*
FROM comment_recipient AS cr
JOIN comment AS c ON c.id=cr.comment_id
JOIN user AS u2 ON c.sender = u2.id
WHERE c.type<=?";
if(isset($args['location'])) $sql .= " AND u2.location=?";
if(isset($args['userId'])) {
if(isset($args['given'])) {
$sql .= " AND c.sender=?";
}else {
$sql .= " AND cr.user_id=?";
}
}
$sql .= " GROUP BY c.id";
$sql .= " ORDER BY c.date DESC";
$sql .= " LIMIT ?";
$sql .= " OFFSET ?";

然后我将使用第二个查询来为每个评论选择收件人

最佳答案

假设您有以下表格:

  • 用户(ID、姓名)

  • 评论(ID,姓名)

  • CommentRecipient ( User_ID, Comment_ID ) - 它们都是上表的外键。

是不是这么简单:要在知道 Comment 查询链接表时获取收件人:

SELECT User_ID from CommentRecipient where Comment_ID= mycommentid;

反之亦然

SELECT Comment_ID from CommentRecipient where User_ID= myuserid;

抱歉,如果我误解了这个问题。

关于php - MYSQL 选择多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30467243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com