gpt4 book ai didi

PHP和MySQL多对多问题

转载 作者:可可西里 更新时间:2023-11-01 00:16:51 26 4
gpt4 key购买 nike

我的头脑仍然围绕着 SQL 和 PHP,但希望有人能帮助解决这个问题:

我有以下表格:

1.

user table
- id
- name
- email

2.

user_group table
- user_id
- group_id

3.

group table
- id
- group_name

用户表和组表之间是多对多的关系。现在我正在尝试构建一个浏览用户页面,其中列出了系统中的所有用户以及他们所属的组,因此页面看起来像这样:

Name: John Doe
Groups: football, tennis, swimming

Name: Jane Doe
Groups: hockey, basketball

Name: Jim Doe
Groups: hockey, football, rugby

等等

为此,我有以下 SQL:

SELECT `user`.name, `group`.name 
FROM `user`, `user_group`, `group`
WHERE `user`.id = `user_group`.user_id
AND `group`.id = `user_group`.group_id
GROUP BY `user`.id, `group`.id

返回结果如下:

1. John Doe | football
2. John Doe | tennis
3. John Doe | swimming
4. Jane Doe | hockey
5. Jane Doe | basketball
etc. etc.

如您所见,需要对返回的结果进行操作,以生成前面显示的以逗号分隔的组,如 .

有没有一种简单的方法让页面显示组,以便它们在 MySQL 中的每个用户的逗号分隔列表中?或者我是否必须编写 PHP 代码来遍历结果以查找重复的 ID 并在页面上生成以逗号分隔的组列表?还是我的方法完全错误?

非常感谢。

最佳答案

有几个选项(按我个人喜好的顺序)。

  1. 不要按用户 ID 分组,而是遍历结果并使用用户 ID 作为键创建一个多维数组。
  2. 使用GROUP_CONCAT ,这不是很漂亮。
  3. 使用单独的查询来选择所有组 + 用户,并迭代以创建多维数组。

关于PHP和MySQL多对多问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173837/

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