php mysql 我托盘加入 3 个表,但显示重复的结果

我有3张桌子


notifications


not_id    |     not_name    

-------------------------

  2       |   Notification Name 01  

  3       |   Notification Name 02      

  4       |   Notification Name 03  

groups


group_id      |     group_name  

-------------------------

  4       |   group name 1  

  5       |   group name 2      

group_not


---------------------------

group_not_id |  group_id |  not_id  

---------------------------

     1       |     4     |      2   

     2       |     4     |      3   

     3       |     5     |      4   

我想显示与 group_id = 4 的组相关的所有通知


但 php 端显示重复如下:


Notification Name

Notification Name 01    

Notification Name 01    

Notification Name 02    

Notification Name 02

MYSQL代码


function getRows_not_group($group_id)

    global $conn;

$sql = "SELECT group_not.group_not_id, notifications.not_name, groups.group_name FROM group_not JOIN groups ON group_not.group_id = $group_id JOIN notifications ON group_not.not_id = notifications.not_id WHERE group_not.group_id = $group_id";

    $result = mysqli_query($conn, $sql);

    if(!$result)

    {

        echo mysqli_error($conn);

    }

    $rows = [];

    if(mysqli_num_rows($result) > 0)

    {

        while ($row = mysqli_fetch_assoc($result)) 

        {

            $rows[] = $row;

        }

    }

   return $rows;

}


猛跑小猪
浏览 86回答 2
2回答

慕标琳琳

groups需要修复引入表的连接条件。你有:SELECT ...FROM group_not JOIN groups ON group_not.group_id = $group_id   --> hereJOIN notifications ON group_not.not_id = notifications.not_id WHERE group_not.group_id = $group_id虽然您实际上需要:JOIN groups ON group_not.group_id = groups.group_id我还建议使用表别名来使查询更易于读写。您还应该使用参数化查询,而不是连接查询字符串中的变量。所以:SELECT gn.group_not_id, n.not_name, g.group_name FROM group_not gn INNER JOIN groups g ON gn.group_id = g.group_idJOIN notifications ON gn.not_id = n.not_id WHERE gn.group_id = ?

郎朗坤

我建议您使用 SELECT DISTINCT 如下:SELECT DISTINCT group_not.group_not_id, notifications.not_name, groups.group_name FROM group_not JOIN groups ON group_not.group_id = $group_id JOIN notifications ON group_not.not_id = notifications.not_id WHERE group_not.group_id = $group_id";SELECT DISTINCT 语句用于仅返回不同(不同)的值。
打开App,查看更多内容
随时随地看视频慕课网APP