Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用“创建Mysql查询”;“在什么情况下”;及;分组方式;_Mysql_Pivot - Fatal编程技术网

如何使用“创建Mysql查询”;“在什么情况下”;及;分组方式;

如何使用“创建Mysql查询”;“在什么情况下”;及;分组方式;,mysql,pivot,Mysql,Pivot,给定数据库中的3个表(prodi、mahasiswa和status),我试图输出分组和计数的结果 查询 实际结果 期望结果 您知道如何使此查询工作吗?在分组前将其放入子查询中 SELECT sesuatu.namaprodi, sum(sesuatu.1) '1', sum(sesuatu.2) '2', sum(sesuatu.3) '3', sum(sesuatu.4) '4', sum(sesuatu.5) '5', sum(sesuatu.6) '6', sum(sesuatu.7

给定数据库中的3个表(
prodi
mahasiswa
status
),我试图输出分组和计数的结果

查询 实际结果 期望结果
您知道如何使此查询工作吗?

在分组前将其放入子查询中

SELECT
sesuatu.namaprodi,
sum(sesuatu.1) '1',
sum(sesuatu.2) '2',
sum(sesuatu.3) '3', 
sum(sesuatu.4) '4',
sum(sesuatu.5) '5',
sum(sesuatu.6) '6',
sum(sesuatu.7) '7',
sum(sesuatu.8) '8'
FROM
(SELECT
prodi.namaprodi,
(case when (`status`.idsm)='1' then 1 else 0 end) as '1',
(case when (`status`.idsm)='2' then 1 else 0 end) as '2',
(case when (`status`.idsm)='3' then 1 else 0 end) as '3',
(case when (`status`.idsm)='4' then 1 else 0 end) as '4',
(case when (`status`.idsm)='5' then 1 else 0 end) as '5',
(case when (`status`.idsm)='6' then 1 else 0 end) as '6',
(case when (`status`.idsm)='7' then 1 else 0 end) as '7',
(case when (`status`.idsm)='8' then 1 else 0 end) as '8'
FROM
`status`
INNER JOIN mahasiswa ON mahasiswa.idm = `status`.idm
INNER JOIN prodi ON prodi.idp = mahasiswa.idp)
sesuatu group by sesuatu.namaprodi

查询需要写成

SELECT
    prodi.namaprodi, 
    SUM(Sem1) as Sem1,
    SUM(Sem2) as Sem2,
    SUM(Sem3) as Sem3,
    SUM(Sem4) as Sem4,
    SUM(Sem5) as Sem5,
    SUM(Sem6) as Sem6,
    SUM(Sem7) as Sem7,
    SUM(Sem8) as Sem8
FROM mahasiswa
INNER JOIN 
(SELECT status.idm, 
    (case when count(`status`.idsm)='1' then 1 else 0 end) as 'Sem1', 
    (case when count(`status`.idsm)='2' then 1 else 0 end) as 'Sem2', 
    (case when count(`status`.idsm)='3' then 1 else 0 end) as 'Sem3', 
    (case when count(`status`.idsm)='4' then 1 else 0 end) as 'Sem4', 
    (case when count(`status`.idsm)='5' then 1 else 0 end) as 'Sem5', 
    (case when count(`status`.idsm)='6' then 1 else 0 end) as 'Sem6', 
    (case when count(`status`.idsm)='7' then 1 else 0 end) as 'Sem7', 
    (case when count(`status`.idsm)='8' then 1 else 0 end) as 'Sem8' 
    FROM `status` 
    INNER JOIN mahasiswa ON mahasiswa.idm = `status`.idm 
    GROUP BY `status`.idm 
)SemCount
    ON mahasiswa.idm = SemCount.idm
INNER JOIN prodi ON prodi.idp = mahasiswa.idp
GROUP BY prodi.idp
我检查了查询,它给出了所需的结果


当您需要按多个列分组时,请在子查询中分组,在主查询中分组

您可能需要Mysql透视表检查链接,请帮助我在Mysql中进行查询。
Hukum   0   2   0   0   0   1   0   0
Ekonomi 0   0   0   2   0   0   0   0
SELECT
sesuatu.namaprodi,
sum(sesuatu.1) '1',
sum(sesuatu.2) '2',
sum(sesuatu.3) '3', 
sum(sesuatu.4) '4',
sum(sesuatu.5) '5',
sum(sesuatu.6) '6',
sum(sesuatu.7) '7',
sum(sesuatu.8) '8'
FROM
(SELECT
prodi.namaprodi,
(case when (`status`.idsm)='1' then 1 else 0 end) as '1',
(case when (`status`.idsm)='2' then 1 else 0 end) as '2',
(case when (`status`.idsm)='3' then 1 else 0 end) as '3',
(case when (`status`.idsm)='4' then 1 else 0 end) as '4',
(case when (`status`.idsm)='5' then 1 else 0 end) as '5',
(case when (`status`.idsm)='6' then 1 else 0 end) as '6',
(case when (`status`.idsm)='7' then 1 else 0 end) as '7',
(case when (`status`.idsm)='8' then 1 else 0 end) as '8'
FROM
`status`
INNER JOIN mahasiswa ON mahasiswa.idm = `status`.idm
INNER JOIN prodi ON prodi.idp = mahasiswa.idp)
sesuatu group by sesuatu.namaprodi
SELECT
    prodi.namaprodi, 
    SUM(Sem1) as Sem1,
    SUM(Sem2) as Sem2,
    SUM(Sem3) as Sem3,
    SUM(Sem4) as Sem4,
    SUM(Sem5) as Sem5,
    SUM(Sem6) as Sem6,
    SUM(Sem7) as Sem7,
    SUM(Sem8) as Sem8
FROM mahasiswa
INNER JOIN 
(SELECT status.idm, 
    (case when count(`status`.idsm)='1' then 1 else 0 end) as 'Sem1', 
    (case when count(`status`.idsm)='2' then 1 else 0 end) as 'Sem2', 
    (case when count(`status`.idsm)='3' then 1 else 0 end) as 'Sem3', 
    (case when count(`status`.idsm)='4' then 1 else 0 end) as 'Sem4', 
    (case when count(`status`.idsm)='5' then 1 else 0 end) as 'Sem5', 
    (case when count(`status`.idsm)='6' then 1 else 0 end) as 'Sem6', 
    (case when count(`status`.idsm)='7' then 1 else 0 end) as 'Sem7', 
    (case when count(`status`.idsm)='8' then 1 else 0 end) as 'Sem8' 
    FROM `status` 
    INNER JOIN mahasiswa ON mahasiswa.idm = `status`.idm 
    GROUP BY `status`.idm 
)SemCount
    ON mahasiswa.idm = SemCount.idm
INNER JOIN prodi ON prodi.idp = mahasiswa.idp
GROUP BY prodi.idp