Selecinar tudo que for igual, sem parametros mas tem que ser
iae gente.
Tigrada, to sofrendo o atentado pra faze uma consulta em sql, aqui em uma tabela. seguinte, eu tenho uma tabela detalhe que tem as Colunas ID_EXAME,ID_HONO,TP.
os dados ficam assim nela:
o que eu preciso é selecionar tudo que ID_HONO = 1 como principal e ID_HONO = 2 como Auxiliar... só que o ID_EXAME entre esses 2 tem que ser igual.
Não tenho a minima idéia de como montar o SQL, já tentei várias maneiras e nenhuma deu certo segue um dos scripts que tentei:
Qualquer ajuda é bem aceita, agradeço desde já a juda!
vlw ^.^
Tigrada, to sofrendo o atentado pra faze uma consulta em sql, aqui em uma tabela. seguinte, eu tenho uma tabela detalhe que tem as Colunas ID_EXAME,ID_HONO,TP.
os dados ficam assim nela:
ID_EXAME,ID_HONO,TP 1 1 P 1 2 AUX 2 7 P 6 1 P 6 2 AUX
o que eu preciso é selecionar tudo que ID_HONO = 1 como principal e ID_HONO = 2 como Auxiliar... só que o ID_EXAME entre esses 2 tem que ser igual.
Não tenho a minima idéia de como montar o SQL, já tentei várias maneiras e nenhuma deu certo segue um dos scripts que tentei:
SELECT E.ID_EXAME, E.DATA_EXAME,E.ID_CONVENIO, E.DT_PGTO_HONO, E.ID_PACIENTE,HE.* FROM HONO_EXAME HE, EXAME E WHERE ( (HE.ID_EXAME = E.ID_EXAME)AND (HE.ID_HONO = 1) AND (HE.TP = ´P´) AND (E.DT_PGTO_HONO >=´2008-01-01´)AND (E.DT_PGTO_HONO <=´2009-01-01´) ) UNION SELECT E.ID_EXAME, E.DATA_EXAME,E.ID_CONVENIO, E.DT_PGTO_HONO, E.ID_PACIENTE,HE.* FROM HONO_EXAME HE, EXAME E WHERE ( (HE.ID_EXAME = E.ID_EXAME)AND (HE.ID_HONO = 7) AND (HE.TP <> ´P´) AND (E.DT_PGTO_HONO >=´2008-01-01´)AND (E.DT_PGTO_HONO <=´2009-01-01´) )
Qualquer ajuda é bem aceita, agradeço desde já a juda!
vlw ^.^
Daniel Martins
Curtidas 0
Respostas
Emerson Nascimento
21/10/2008
baseado nos registros exibidos, qual seria o retorno?
GOSTEI 0
Daniel Martins
21/10/2008
no caso citado seriam os registros
ID_EXAME,ID_HONO,TP 1 1 P 1 2 AUX 6 1 P 6 2 AUX Excluso 2 7 P
GOSTEI 0
Emerson Nascimento
21/10/2008
tente assim:
SELECT E.ID_EXAME, E.DATA_EXAME, E.ID_CONVENIO, E.DT_PGTO_HONO, E.ID_PACIENTE, HE.* FROM HONO_EXAME HE INNER JOIN HONO_EXAME HE2 ON (HE2.ID_EXAME = HE2.ID_EXAME AND HE2.ID_HONO <> HE.ID_HONO) INNER JOIN EXAME E ON (E.ID_EXAME = HE.ID_EXAME) WHERE HE.ID_HONO IN (1, 2) AND (E.DT_PGTO_HONO >=´2008-01-01´) AND (E.DT_PGTO_HONO <=´2009-01-01´))
GOSTEI 0
Daniel Martins
21/10/2008
Oi. testei o sql sugerido... mas estranhamente ele repetiu várias vezes os mesmos registros
Ex.:
Sinistro Oo
Tipo se ele deveria retornar 4 registros diferentes ele Me retornou 4 registros iguais.
Ex.:
ID_EXAME,ID_HONO,TP 1 1 P 1 1 P 1 1 P 1 1 P ...
Sinistro Oo
Tipo se ele deveria retornar 4 registros diferentes ele Me retornou 4 registros iguais.
GOSTEI 0
Daniel Martins
21/10/2008
talves a solução seja mudar a tabela mesmo.. né... tipo criar 2 colunas uma para armazenar o P e outro para armazenar o AUX...
sei llá
sei llá
GOSTEI 0
Emerson Nascimento
21/10/2008
algo assim não serve?
SELECT E.ID_EXAME, E.DATA_EXAME, E.ID_CONVENIO, E.DT_PGTO_HONO, E.ID_PACIENTE, HE1.*, HE2.* FROM EXAME E LEFT JOIN HONO_EXAME HE1 ON (HE1.ID_EXAME = E.ID_EXAME AND HE1.ID_HONO = 1) LEFT JOIN HONO_EXAME HE2 ON (HE2.ID_EXAME = E.ID_EXAME AND HE2.ID_HONO = 2) WHERE (COALESCE(HE1.ID_HONO,0) = 1) AND (COALESCE(HE2.ID_HONO,0) = 2) AND (E.DT_PGTO_HONO >=´2008-01-01´) AND (E.DT_PGTO_HONO <=´2009-01-01´)
GOSTEI 0
Daniel Martins
21/10/2008
Oi,
resolvi o problema usando 2 queryes diferentes, e um bocado de algoritimo no delphi.
Agradeço as dicas
Obrigado.
resolvi o problema usando 2 queryes diferentes, e um bocado de algoritimo no delphi.
Agradeço as dicas
Obrigado.
GOSTEI 0