Fórum Juntar duas consultas SQL em uma #55530
20/03/2006
0
Gostaria de transformar os dois Selects abaixo em apenas um.
Select NOME, ENDERECO, BAIRRO, CEP, CIDADE, UF, NASC, OBS, FONE
from CADCLI
Where extract(day from NASC) between :diaIni and :diaFim
and extract(month from NASC) between :mesIni and :mesFim;
Select CONJUGE, ENDERECO, BAIRRO, CEP, CIDADE, UF, NAS_CO, OBS, FONE
from CADCLI
Where extract(day from NAS_CO) between :diaIni and :diaFim
and extract(month from NAS_CO) between :mesIni and :mesFim;
Ou seja, verifico o nascimento do cliente ou do conjuge para ver se um
deles esta fazendo aniver e gostaria de ter apenas 1 dataset para os
relatórios.
Obrigado,
Marcello.
[color=green:718a13af9d]Movido de Delphi para Interbase/Firebird[/color:718a13af9d]
Marcello
Curtir tópico
+ 0Posts
20/03/2006
Paullsoftware
Select NOME, CONJUGE, ENDERECO, BAIRRO, CEP, CIDADE, UF, NASC, NAS_CO,OBS, FONE from CADCLI Where extract(day from NASC) between :diCli and :dfCli and extract(month from NASC) between :miCli and :mfCli and extract(day from NAS_CO) between :diCo and :dfCo and extract(month from NAS_CO) between :miCo and :mfCo
não testei mais deve funcionar! :wink:
Gostei + 0
20/03/2006
Marcello
Não me adianta ter um dataset com o Nome e o Conjugê.
Vc tem alguma idéia para esta situação ?
Gostei + 0
20/03/2006
Gandalf.nho
Select NOME, ENDERECO, BAIRRO, CEP, CIDADE, UF, NASC, OBS, FONE from CADCLI Where extract(day from NASC) between :diaIni and :diaFim and extract(month from NASC) between :mesIni and :mesFim UNION Select CONJUGE, ENDERECO, BAIRRO, CEP, CIDADE, UF, NAS_CO, OBS, FONE from CADCLI Where extract(day from NAS_CO) between :diaIni and :diaFim and extract(month from NAS_CO) between :mesIni and :mesFim
Gostei + 0
21/03/2006
Marcello
Não consegui rodar este SQL com UNION. Ainda estou usando Interbase 6, será isso ?
O erro é SQL error code = -104. Token unknown.
Gostei + 0
22/03/2006
Marcello
Descobri q não posso usar UNION pois apesar dos dados serem de mesmo tipo e tamanho, seus nomes são diferentes - NOME/CONJUGE e NASC/NAS_CO.
Será q alguém tem alguma outra idéia ? :cry:
Obrigado.
Marcello
Gostei + 0
22/03/2006
Thiago Vidal
Select NOME, ENDERECO, BAIRRO, CEP, CIDADE, UF, NASC, OBS, ... UNION Select CONJUGE as NOME, ENDERECO, BAIRRO, CEP, CIDADE, UF, NAS_CO as NASC, OBS, ...
Gostei + 0
22/03/2006
Gandalf.nho
Gostei + 0
22/03/2006
Marcello
Realmente os nome dos campos não tem nada a ver.
Troquei os campos NOME e CONJUGE por outros dois (PAI e MAE) e mantive NASC e NAS_CO e funcionou perfeitamente.
Só q se eu volto os campos NOME (VARCHAR(50)) e CONJUGE (VARCHAR(50)) da o erro Token unknown.
Realmente não sei mais o q fazer. :cry:
Gostaria q se alguém passou por isto me desse uma luz.
Marcello.
Gostei + 0
22/03/2006
Gandalf.nho
Gostei + 0
22/03/2006
Marcello
Inclusive funcionou o UNION, só q com outros campos da tabela e não com o NOME e CONJUGE.
Gostei + 0
22/03/2006
Digitom
from [color=red:712f1e7e8c]CADCLI[/color:712f1e7e8c]
Where extract(day from NASC) between :diaIni and :diaFim
and extract(month from NASC) between :mesIni and :mesFim;
Select CONJUGE, ENDERECO, BAIRRO, CEP, CIDADE, UF, NAS_CO, OBS, FONE
from [color=red:712f1e7e8c]CADCLI[/color:712f1e7e8c]
Where extract(day from NAS_CO) between :diaIni and :diaFim
and extract(month from NAS_CO) between :mesIni and :mesFim;
Não sei se você colou e copiou os arquivos aqui, mas veja que no seus FROM voce colocou CADCLI para os conjuges e para cadcli.
Se realmente for CADCLI para dois FROMs utilize assim
Select [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]NOME, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]ENDERECO, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]BAIRRO, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]CEP, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]CIDADE, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]UF, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]NASC, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]OBS, [color=red:712f1e7e8c]cli.[/color:712f1e7e8c]FONE
from CADCLI [color=red:712f1e7e8c]cli[/color:712f1e7e8c]
Where extract(day from NASC) between :diaIni and :diaFim
and extract(month from NASC) between :mesIni and :mesFim;
Select [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]CONJUGE, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]ENDERECO, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]BAIRRO, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]CEP, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]CIDADE, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]UF, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]NAS_CO, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]OBS, [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]FONE
from CADCLI [color=red:712f1e7e8c]conj.[/color:712f1e7e8c]
Where extract(day from NAS_CO) between :diaIni and :diaFim
and extract(month from NAS_CO) between :mesIni and :mesFim;
Veja meu exemplo é quase o mesmo, usando o firebird, e deu certo:
Gostei + 0
23/03/2006
Marcello
Interessante foi q troquei o Firebird 1.5.2.4731 pelo Firebird 2.0 beta 2 e daí funcionou com uma ressalva - ele trouxe um registro com todos os campos null (não existem registros null na minha tabela).
To abandonando o UNION - vou tentar de outro jeito.
Agradeço os colegas.
Marcello.
Gostei + 0
23/03/2006
Gandalf.nho
Gostei + 0
23/03/2006
Marcello
Vc poderia me dar um exemplo de SP unindo selects ?
Havia pensado nisto, mas não tenho muita experiência em SP e não consegui fazer. :oops:
Obrigado,
Marcello.
Gostei + 0
24/03/2006
Gandalf.nho
FOR Select NOME, ENDERECO, BAIRRO, CEP, CIDADE, UF, NASC, OBS, FONE from CADCLI Where extract(day from NASC) between :diaIni and :diaFim and extract(month from NASC) between :mesIni and :mesFim INTO :NOME, :ENDERECO, :BAIRRO, :CEP, :CIDADE, :UF, :NASC, :OBS, :FONE DO SUSPEND; FOR Select CONJUGE, ENDERECO, BAIRRO, CEP, CIDADE, UF, NAS_CO, OBS, FONE from CADCLI Where extract(day from NAS_CO) between :diaIni and :diaFim and extract(month from NAS_CO) between :mesIni and :mesFim INTO :NOME, :ENDERECO, :BAIRRO, :CEP, :CIDADE, :UF, :NASC, :OBS, :FONE DO SUSPEND;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)