gpt4 book ai didi

php - 在 MySQL 中将多行显示为一行

转载 作者:行者123 更新时间:2023-11-29 13:01:36 25 4
gpt4 key购买 nike

我需要一些建议

我创建了一个网络应用程序,用户可以同时将表单分配给多个收件人,以便一次分配将多行(每个收件人一行)插入到 form_assignments 表中,如下所示:

foreach ($recipients as $row) {
$query = "INSERT INTO form_assignments
(sender_id, recipient_id, form_id, due_date, priority_id, comment, completed)
VALUES
('{$sender_id}', " . $row['id'] . ", '{$assigned_form_id}', '2014-04-30 00:00:00', '{$priority_id}', '{$comment}', '{$completed}')";

在上面的示例中,$recipients 是一个数组,其中包含由 $row['id'] 引用的用户 ID。

例如,一项作业可以生成 100 个这样的行(针对 100 个收件人),并且每个收件人都可以将其单独的行编辑为“已完成”。到目前为止这一切都很好。

问题是,如果我想为分配任务的用户生成分配列表,我希望他只能看到多用户分配的一行(而不是他向其发送分配的每个收件人的一行)。

我希望能够向用户显示如下表格:

您将:表格 1 分配给:50 位用户 截止日期:2014 年 4 月 25 日 已完成用户:10 查看用户列表

每个受让人都会看到一个类似的表格:

用户 1 为您分配了以下表格:表格 1 截止日期:2014 年 4 月 25 日,点击标记为已完成

我不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。

最佳答案

如果我理解正确的话,您想向分配的人展示一份按任务和日期分组的任务列表。对于每个作业/日期结果,您还希望显示有多少用户已经完成了作业。

所以你想从作业中选择 Group首先按 sender_idform_iddue_date 获取结果:

SELECT sender_id, form_id, due_date
FROM assignments as groupedAssignments
GROUP BY
groupedAssignments.sender_id,
groupedAssignments.form_id,
groupedAssignments.due_date

现在您还想加入作业以获取已完成该作业的学生数量。这就是我添加别名“groupedAssignments”的原因。因此,在 FROM

之后添加一个 JOIN
JOIN assignments as finishedAssignments ON (
groupedAssignments.sender_id = finishedAssignments.sender_id
AND groupedAssignments.form_id = finishedAssignments.form_id
AND groupedAssignments.due_date = finishedAssignments.due_date
AND finishedAssignments.completed = TRUE )

现在您可以在已完成的作业上添加计数,从而提供完整的查询:

SELECT 
groupedAssignments.sender_id,
groupedAssignments.form_id,
groupedAssignments.due_date,
COUNT(finishedAssignments.completed) as finishedStudents
FROM assignments as groupedAssignments
JOIN assignments as finishedAssignments ON (
groupedAssignments.sender_id = finishedAssignments.sender_id
AND groupedAssignments.form_id = finishedAssignments.form_id
AND groupedAssignments.due_date = finishedAssignments.due_date
AND finishedAssignments.completed = TRUE )
GROUP BY
finishedAssignments.sender_id,
finishedAssignments.form_id,
finishedAssignments.due_date

显然我没有测试过这个,它可能对你不起作用,但它应该引导你走向正确的方向。阅读GROUP BYJOIN .

关于php - 在 MySQL 中将多行显示为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23263372/

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