Como executar inner join+group by+order by no Interbase/Firebird?
28/01/2016
0
Prezados,
Como faço para executar um "SELECT" contendo diversos "INNER JOIN" ligando várias tabelas e junto usar um "GROUP BY" para agrupar o resultado por media dúzia de colunas da tabela principal? Consegui fazer funcionar, mas tenho que informa todas as colunas relacionas no "SELECT", só que o resultado não fica como necessito, pois como já mencionei, quero agrupar somente por media dúzia de coluna listadas no "SELECT".
Só para constar: Fiz um simulação no MySQL e o mesmo funciona prefeitamente, mas no Interbase/Firebird não dá certo.
SQL (Teste):
Grato e aguardo qualquer tipo de ajuda.
Como faço para executar um "SELECT" contendo diversos "INNER JOIN" ligando várias tabelas e junto usar um "GROUP BY" para agrupar o resultado por media dúzia de colunas da tabela principal? Consegui fazer funcionar, mas tenho que informa todas as colunas relacionas no "SELECT", só que o resultado não fica como necessito, pois como já mencionei, quero agrupar somente por media dúzia de coluna listadas no "SELECT".
Só para constar: Fiz um simulação no MySQL e o mesmo funciona prefeitamente, mas no Interbase/Firebird não dá certo.
SQL (Teste):
SELECT t1.oco_descricao,t1.emp_codigo,t1.oco_usuario,t2.emp_fantasia,t3.usu_nome FROM ocorrencias t1 INNER JOIN empresas t2 ON t2.emp_codigo = t1.emp_codigo INNER JOIN usuarios t3 ON t3.usu_codigo_interno = t1.oco_usuario GROUP BY t1.emp_codigo,t1.oco_descricao,t1.oco_usuario ORDER BY t1.emp_codigo,t1.oco_descricao
Grato e aguardo qualquer tipo de ajuda.
M. C.
Curtir tópico
+ 0
Responder
Posts
02/02/2016
Huidemar Costa
Para o Group by, você precisa de função 'agregada' ex: sum, count, max:
Uma alternativa seria você usar o max nos campos que você não está agrupando, o sql ficaria assim:
Por que você precisa do GROUP BY ? (Eu não entendi muito bem, as vezes seu problema poderia ser resolvido de outra forma sem a necessiadade do GROUP BY)
Uma alternativa seria você usar o max nos campos que você não está agrupando, o sql ficaria assim:
SELECT t1.oco_descricao, t1.emp_codigo, t1.oco_usuario, max(t2.emp_fantasia) emp_fantasia, max(t3.usu_nome) usu_nome FROM ocorrencias t1 INNER JOIN empresas t2 ON t2.emp_codigo = t1.emp_codigo INNER JOIN usuarios t3 ON t3.usu_codigo_interno = t1.oco_usuario GROUP BY t1.emp_codigo,t1.oco_descricao,t1.oco_usuario ORDER BY t1.emp_codigo,t1.oco_descricao
Por que você precisa do GROUP BY ? (Eu não entendi muito bem, as vezes seu problema poderia ser resolvido de outra forma sem a necessiadade do GROUP BY)
Responder
Clique aqui para fazer login e interagir na Comunidade :)