php - SQL多表分组学生
问题描述
尝试根据这些学生所在的组对学生进行分组。我试图将结果显示在某种对象/JSON 中,以便以后可以在 JS 中应用一些排序算法。不确定如何添加 WHERE 语句或 Join 语句?
$link = mysqli_init();
$success = mysqli_real_connect( $link, $host, $user, $password, $db, $port);
$query = mysqli_query($link, "SELECT s_id, group_id, name FROM Group, Student");
$table = array();
while($row = mysqli_fetch_assoc($query))
{
$table = $row;
echo json_encode($table);
}
I want result something like
`
[{'Group': 1, 'name': 'john', 'ID': 101},
{'Group': 1, 'name': 'mike', 'ID': 103},
{'Group': 2, 'name': 'alice', 'ID': 102},
{'Group': 2, 'name': 'rachel', 'ID': 104},]`
the "Student" table
s_id class_id name
101 1 john
103 1 mike
102 1 alice
104 1 rachel
the "Group" table
class_id s_id group_id
1 101 1
1 102 2
1 103 1
1 104 2
解决方案
使用以下命令更改您的 SQL:
SELECT G.group_id AS `Group`,
S.name,
S.s_id AS ID
FROM Student S
JOIN `Group` G ON S.s_id = G.s_id
ORDER BY G.group_id, S.s_id
它是 Student id 列上 2 个表之间的 INNER JOIN,我们选择要显示的列,并根据需要对结果进行排序。
推荐阅读
- visual-studio-code - VSCode自定义字体连字,将两个符号显示为一个?
- nunit - 特性分支上的 Azure 数据工厂 ADF 单元测试,无需将更改部署到数据工厂实例
- javascript - 在不同的 Vuex 模块中提交突变
- html - 使用 CSS 删除第二次出现的选择结果
- php - 在通过模拟定义期望时,PHPUnit 将测试标记为有风险
- asp.net-core - AspnetCore 3.1 OpenIdConnectEvent 使用来自 ClaimActions.MapJsonKey 的声明
- html - 使最后一行有更多列,但与前一行的宽度相同
- excel - 试图循环导入函数
- python - discord.py 错误的命令信息
- c++ - find 函数如何在 cpp 中的字符串数据类型的集合和映射中工作