我有这个查询(有效):
SELECT NOME, AMPM, GROUP_CONCAT(CONCAT(PERITI,' (',QTY,')') SEPARATOR ', ')periti FROM
(SELECT zone.nome, DATE_FORMAT(CONCAT(appuntamenti.data_inizio,' ',appuntamenti.ora_inizio), '%p') AMPM,
periti.sigla PERITI,COUNT(*) QTY FROM appuntamenti
inner join periti on appuntamenti.id_perito = periti.id
inner join zone on appuntamenti.id_zona = zone.id
where appuntamenti.data_inizio='2018-11-20' and appuntamenti.id_zona = '77'
GROUP BY AMPM, PERITI) AS GIORNO1AM
union
SELECT NOME, AMPM, GROUP_CONCAT(CONCAT(PERITI,' (',QTY,')') SEPARATOR ', ')periti FROM
(SELECT zone.nome, DATE_FORMAT(CONCAT(appuntamenti.data_inizio,' ',appuntamenti.ora_inizio), '%p') AMPM,
periti.sigla PERITI,COUNT(*) QTY FROM appuntamenti
inner join periti on appuntamenti.id_perito = periti.id
inner join zone on appuntamenti.id_zona = zone.id
where appuntamenti.data_inizio='2018-11-20' and appuntamenti.id_zona = '78'
GROUP BY AMPM, PERITI) AS GIORNO1AM
union
SELECT NOME, AMPM, GROUP_CONCAT(CONCAT(PERITI,' (',QTY,')') SEPARATOR ', ')periti FROM
(SELECT zone.nome, DATE_FORMAT(CONCAT(appuntamenti.data_inizio,' ',appuntamenti.ora_inizio), '%p') AMPM,
periti.sigla PERITI,COUNT(*) QTY FROM appuntamenti
inner join periti on appuntamenti.id_perito = periti.id
inner join zone on appuntamenti.id_zona = zone.id
where appuntamenti.data_inizio='2018-11-20' and appuntamenti.id_zona = '79'
GROUP BY AMPM, PERITI) AS GIORNO1AM
order by NOME ASC
我想从查询中删除所有“联合”,并在嵌套 where 子句中使用 zone 表 中的 id 列。
类似的东西:
SELECT p.id ,(SELECT NOME, AMPM, GROUP_CONCAT(CONCAT(PERITI,' (',QTY,')') SEPARATOR ', ')periti FROM
(SELECT zone.nome, DATE_FORMAT(CONCAT(appuntamenti.data_inizio,' ',appuntamenti.ora_inizio), '%p') AMPM,
periti.sigla PERITI,COUNT(*) QTY FROM appuntamenti
inner join periti on appuntamenti.id_perito = periti.id
inner join zone on appuntamenti.id_zona = zone.id
where appuntamenti.data_inizio='2018-11-20' and appuntamenti.id_zona = p.id
GROUP BY AMPM, PERITI) AS GIORNO1AM) AS RISULTATO
FROM zone p
但是......当我尝试这个改变时,我得到了这个错误:
1054 - Unknown column 'p.id' in 'where clause'
请帮助我:)
最佳答案
除了 appuntamenti.id_zona 之外,union 的所有元素都是相同的吗?如果是这样,那岂不是行得通:
SELECT NOME, AMPM, GROUP_CONCAT(CONCAT(PERITI,' (',QTY,')') SEPARATOR ', ')periti FROM
(SELECT zone.nome, DATE_FORMAT(CONCAT(appuntamenti.data_inizio,' ',appuntamenti.ora_inizio), '%p') AMPM,
periti.sigla PERITI,COUNT(*) QTY FROM appuntamenti
inner join periti on appuntamenti.id_perito = periti.id
inner join zone on appuntamenti.id_zona = zone.id
where appuntamenti.data_inizio='2018-11-20' and appuntamenti.id_zona IN (77, 78,79)
GROUP BY AMPM, PERITI) AS GIORNO1AM
关于mysql - 在子查询mysql中使用父查询的id列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390747/