Como posso montar uma consulta para essa situação ?
04/05/2012 14:02
0
Bom dia colegas do forum.
Meu primeiro post aqui e gostaria da ajuda de vcs.
Tenho a seguinte situação:
Tenho 3 tabelas no meu banco de dados tbRegistro, tbAtributo e tbValorAtributo.
Montei os dominios para as três tabelas , mas não consigo montar a classe para a tabela
'tbValorAtributo'.
O tipo de registro escolhido irá me trazer os tipos de atributos possíveis que serão inseridos na tabela tbValorAtributo.sendo que cada linha da tabela será um grupo de registro que é mapeado pelo campo 'inform_atribu'.

Preciso montar uma tela que atenda a seguinte query:

SELECT t.*
FROM tbatributo t
WHERE t.id_tipo_regi IN
(SELECT tpreg.id_tipo_regi
FROM tbtiporegi tpreg
WHERE tpreg.cd_tipo_regi LIKE 'CN_PREFIX_GTT')

Com os resultados obtidos preciso realizar uma nova consulta com a seguinte query:

SELECT v1.inform_atribu AS CN_PREFIXO,
v2.inform_atribu AS GTT_SIEBEL,
v3.inform_atribu AS GT_FAKE
FROM tbvaloratri v1
JOIN tbvaloratri v2 ON v1.agrupa_atribu = v2.agrupa_atribu
JOIN tbvaloratri v3 ON v2.agrupa_atribu = v3.agrupa_atribu
WHERE v1.id_atributo = 96
AND v2.id_atributo = 97
AND v3.id_atributo = 98;

Montei a classe de domínio , mas a mesma não me deixa incluir os campos da forma que está escrito no sql.

Estou perdido e não tenho ideia de como fazer esta tela.

Agradeço pela atenção e qualquer exemplo será bem vindo.
Sou muito novo em groovy e já lí bastante coisa , mas não ao ponto de encontrar uma solução.

Um abraço!
Tags: Consulta Sinistra , Groovy


0
ola amigo.
Eu não compreendi muito bem você vai usar isso em um relatório? O tipo de registro escolhido sera passado por parâmetro?

afinal essa consulta que você fez já esta funcionando?
04/05/2012 17:47


0
Obrigado por responder.
Isso não é um relatório , é uma tela.
O sql no banco funciona perfeito , mas não sei implementar isso em groovy.

O primeiro select me retorna os tipos de atributos que serão cadastrados

1 96 CN_PREFIXO Parametro CN_PREFIXO 0 90
2 97 GTT_SIEBEL Parametro GTT_SIEBEL 0 90
3 98 GT_FAKE Parametro GT_FAKE 0 90


O segundo select é que que será cadastrado

1 218802 01 1
2 128802 02 0
3 718802 03 1
4 418495 04 1
5 7198804 05 1


Só que tenho que exibir na tela , neste formato ai e não sei como fazer....
Se preciso mesmo de uma classe de dominio ou não se posso fazer a consulta desta forma no domain ou no controller ?

Ia usar este exemplo..

http://www.ibm.com/developerworks/java/library/j-pg01115/index.html

Mas não sei como .

Obrigado pelo interesse.


1
olha geralmente eu uso HQL direto no controlador passo os parâmetros da tela para a consulta e retorno sem problema o resultado .
tem como usar esse sql sim
por isso eu perguntei se estava funcionando no banco

adicione esse imports onde voce vai usar a consulta seja no controlador ou na classe de dominio
import org.hibernate.SessionFactory
import java.lang.reflect.Field
import org.hibernate.Session
import org.hibernate.Query
adicione uma variavel
def sessionFactory

String query = """SELECT t.*
FROM tbatributo t
WHERE t.id_tipo_regi IN
(SELECT tpreg.id_tipo_regi
FROM tbtiporegi tpreg
WHERE tpreg.cd_tipo_regi LIKE 'CN_PREFIX_GTT')"""

Session sess = sessionFactory.getCurrentSession()
def consulta = sess.createSQLQuery(query)
//consulta.setParameter("parametro",parametro) caso você queira passar parametro

de um println(consulta) para ve o que vai trazer

tem ai qualquer coisa da um grito!!
04/05/2012 18:18


0
Funcionou sim , muito obrigado pela ajuda.
Agora vou ver se consigo montar uma view dinãmica com essa query.
Muito obrigado.


0
Tranquilo...
Estamos ai para isso!!
07/05/2012 11:52



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto