php - 使用相关表收集 1 行信息

标签 php mysql database

我正在尝试使用相关表构建数据库。然而,我从数据库中得到了正确的输出 - 由于用户是相同的,并且数据中唯一的变化是类(class),我想在同一行中收集值“Engelsk”和“Matematik”,而不是除了类(class)之外,有两个几乎相同的产出。 如果不将其放在数据库的同一行中,这是否可能?如果是这样,我非常想知道如何:)

Array
(
[0] => Array
    (
        [Type] => Elev
        [Username] => test
        [Name] => Test Testsen
        [Grade] => 9. Klasse
        [Course] => Engelsk
    )

[1] => Array
    (
        [Type] => Elev
        [Username] => test
        [Name] => Test Testsen
        [Grade] => 9. Klasse
        [Course] => Matematik
    )

)

所以基本上我想要实现的是这样的:

Array
(
[0] => Array
(
    [Type] => Elev
    [Username] => test
    [Name] => Test Testsen
    [Grade] => 9. Klasse
    [Course] => Engelsk, Matematik
)

我的查询如下所示:

                SELECT
                *
            FROM
                lek_Essentials
            LEFT JOIN
                lek_Type
            ON
                lek_Essentials.TypeId = lek_Type.TypeId
            LEFT JOIN
                lek_Grades
            ON
                lek_Essentials.GradeId = lek_Grades.GradeId
            LEFT JOIN
                lek_GradeCourses
            ON
                lek_Grades.GradeId = lek_GradeCourses.GradeId
            LEFT JOIN
                lek_Courses
            ON 
                lek_GradeCourses.CourseId = lek_Courses.CourseId
            LEFT JOIN
                lek_Request
            ON
                lek_Courses.CourseId = lek_Request.CourseId
            WHERE
                lek_Essentials.UserId = lek_Request.UserId

最佳答案

目前尚不清楚数组中的每一列来自哪些表,但在 MySQL 中您可以使用 GROUP_CONCAT将两行聚合为一行:

SELECT t.type,
  e.username,
  e.name,
  g.grade,
  group_concat(c.course) course
FROM lek_Essentials e
LEFT JOIN lek_Type t
  ON e.TypeId = t.TypeId
LEFT JOIN lek_Grades g
  ON e.GradeId = g.GradeId
LEFT JOIN lek_GradeCourses gc
  ON g.GradeId = gc.GradeId
LEFT JOIN lek_Courses c
  ON gc.CourseId = c.CourseId
LEFT JOIN lek_Request r
  ON c.CourseId = r.CourseId
WHERE e.UserId = r.UserId
group by t.type, e.username, e.name, g.grade

关于php - 使用相关表收集 1 行信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668437/

相关文章:

php - 什么属性拥有 jquery droppable 的值(value)

java - 使用 Jackcess 从 Access 表中删除特定行

php - 有什么方法可以将字符串中的图像(带有图像的内容)放入 html 中?

javascript - Jasny 多文件上传与其他表单元素

javascript - 使用远程数据库提前输入并动态加载下拉列表

mysql - 在不遵守单词顺序的情况下使用 REGEXP 进行查询

java - 使用 PHP 和 mysql 构建 Android 登录

php - Mysql 错误 #1305 FUNCTION db.sys_exec 不存在

mysql - 在 DBMS 上存储高度 secret 数据的安全指南

php - 检查数据库字段是否包含内爆变量的值