繁体   English   中英

MYSQL选择多对多

[英]MYSQL Select many to many

我正在使用两个表:注释,用户

注释表的收件人字段包含用户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,Name)

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

它不是那么简单:要在知道“评论”的情况下获取链接表的收件人:

SELECT User_ID from CommentRecipient where Comment_ID= mycommentid;

反之亦然

SELECT Comment_ID from CommentRecipient where User_ID= myuserid;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM