gpt4 book ai didi

php - 多对多:SELECT 只打印某些内容。当组中有用户时退出

转载 作者:行者123 更新时间:2023-11-29 22:17:32 24 4
gpt4 key购买 nike

首先,我的多对多关系包含下表:

+----------+      +--------------+     
| users | | users_groups | +--------------+
+----------+ +--------------+ | groups |
| user_id |----->| user_id | +--------------+
| username | | group_id |<----| group_id |
| realname | +--------------+ | group_name |
| password | | group_desc |
+----------+ +--------------+

现在我想获取所有现有组以及特定组的所有用户的列表/表(不是数据库中的表!),如下所示:

+---------------+--------------------------+
| group | members |
+---------------+--------------------------+
| Group1 | User1, User2, User3 |
| Group2 | User3, User4, User6 |
| Group3 | |
+---------------+--------------------------+

我当前的 MySQL 代码是:

$all_groups = mysqli_query
($db,
"
SELECT g.group_name,GROUP_CONCAT(DISTINCT u.realname SEPARATOR ', ') AS users
FROM groups g
JOIN users_groups ug1 ON g.group_id=ug1.group_id
JOIN users u ON ug1.user_id=u.user_id
GROUP BY g.group_name
"
);

我当前的 PHP 代码是:

while($row_all_groups = mysqli_fetch_array($all_groups)) {
echo '<tr>';
echo '<td class="td_contentbar">'.$row_all_groups["group_name"].'</td>';
echo '<td class="td_contentbar">'.$row_all_groups["users"].'</td>';
echo '</tr>';
}

但问题是,如果一个组没有用户(在 users_groups-table 中),该组不会显示在我拥有的列表/表中,我不知道如何解决这个问题。

最佳答案

将查询中的 JOIN user_groups 替换为 LEFT JOIN user_groups。

关于php - 多对多:SELECT 只打印某些内容。当组中有用户时退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076924/

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