Я пытаюсь перенести представления MySQL 5.0 в Oracle 12c. Это синтаксис, который у меня есть в MySQL:
select count('table1'.'uuid') AS 'Count',
'table2'.'description' AS 'STATUS',
'table3'.'name' AS 'Court'
from (('table2' join 'table1')
join 'table3')
where (('table1'.'statusCode' = 'table2'.'code')
and ('table3'.'uuid' = 'table1'.'courtUuid'))
group by 'table1'.'courtUuid','table2'.'description';
Это синтаксис, который у меня есть для Oracle 12c:
select count(table1.uuid) AS Count,
table2.description AS STATUS,
table3.NAME as Court
from table2
join table1
on (table1.statuscode = table2.code)
join table3
on (table3.uuid = table1.courtuuid)
group by table1.courtuuid,table2.description;
Когда я запускаю синтаксис Oracle 12c, я получаю:
ORA-00979: не выражение GROUP BY 00979. 00000 - "не выражение GROUP BY" * Причина:
* Действие: Ошибка в строке: 3 Столбец: 1
Однако, если я добавлю table3.NAME как часть группы, я получаю 866 строк. Запрос в MySQL дает 1025 строк.
select count(table1.uuid) AS Count,
table2.description AS STATUS,
table3.NAME as Court
from table2
join table1
on (table1.statuscode = table2.code)
join table3
on (table3.uuid = table1.courtuuid)
group by table1.courtuuid,table2.description,table3.NAME;
Может кто-нибудь помочь мне понять это?
Вы, вероятно, хотите:
select count(table1.uuid) AS Count,
table2.description AS STATUS,
table3.NAME as Court
from table2 join
table1
on table1.statuscode = table2.code join
table3
on (able3.uuid = table1.courtuuid
group by table3.name, table2.description;
Неагрегированные столбцы в select
должны быть в group by
. К сожалению, у MySQL есть (неправильная) функция, которая не требует этой логики.
Строго говоря, вы также можете:
select count(table1.uuid) AS Count,
table2.description AS STATUS,
max(table3.NAME) as Court
from table2 join
table1
on table1.statuscode = table2.code join
table3
on table3.uuid = table1.courtuuid
group by table1.courtuuid, table2.description;
Это больше похоже на ваш запрос, но первая версия, вероятно, вы намерены.