seleção em duas tabelas, linha a linha, é possivel?
tenho duas tabelas:
1- Financeiro
Data
Controle_Cliente
Historico
Valor
2- Pedidos
Data
Controle_Cliente
Referencia
Valor
gostaria de atraves de uma seleção pelo controle_cliente listar os dados do financeiro e os dados dos pedidos mais um abaixo do outro ordernado por data!!!! é possivel????
para montar um relatorio!
1- Financeiro
Data
Controle_Cliente
Historico
Valor
2- Pedidos
Data
Controle_Cliente
Referencia
Valor
gostaria de atraves de uma seleção pelo controle_cliente listar os dados do financeiro e os dados dos pedidos mais um abaixo do outro ordernado por data!!!! é possivel????
para montar um relatorio!
Mrcdlf
Curtidas 0
Respostas
Crash
04/06/2004
SELECT * FROM FINANCEIRO, PEDIDOS WHERE PEDIDOS.CONTROLE_CLIENTE= FINANCEIRO.CONTORLE_CLIENTE ORDER BY CONTROLE_CLIENTE, DATA
Vc vai colocar no QuickRep uma banda de Grupo e na expression dela vc coloca o campo CONTROLE_CLIENTE.
e Pronto
t+
GOSTEI 0
Mrcdlf
04/06/2004
SELECT * FROM FINANCEIRO, PEDIDOS WHERE PEDIDOS.CONTROLE_CLIENTE= FINANCEIRO.CONTORLE_CLIENTE ORDER BY CONTROLE_CLIENTE, DATA
ok mais ai ele fará um produto cartesiano entre financeiro e pedidos, certo?
o problema é que quero pegar um apos o outro sem repetição
exemplo:
*tabela financeiro*
data controle valor
01/06/2004 2 12,2
06/06/2004 3 10,0
*tabela pedido*
data controle valor
02/06/2004 2 12,2
03/06/2004 2 16,0
06/06/2004 3 10,0
resultado que desejo:
data controle valor
01/06/2004 2 12,2 <- tabela financeiro
02/06/2004 2 12,2 <- tabela pedido
03/06/2004 2 16,0 <- tabela pedido
na verdade gostaria de jogar o valor do pedido negativo para no final saber qual o saldo do clienten, entendeu? um contas correntes...
GOSTEI 0
Paulo_amorim
04/06/2004
Olá
Se eu entendi ceerto, utilize UNION
SELECT controle_cliente, valor FROM financeiro ORDER BY data
UNION
SELECT controle_cliente, valor FROM pedido ORDER BY data
Espero que ajude
Até+
Se eu entendi ceerto, utilize UNION
SELECT controle_cliente, valor FROM financeiro ORDER BY data
UNION
SELECT controle_cliente, valor FROM pedido ORDER BY data
Espero que ajude
Até+
GOSTEI 0
Mrcdlf
04/06/2004
Olá
Se eu entendi ceerto, utilize UNION
SELECT controle_cliente, valor FROM financeiro ORDER BY data
UNION
SELECT controle_cliente, valor FROM pedido ORDER BY data
Espero que ajude
Até+
ISSO!
quer dizer quase isso... :( só mais alguns ajustes :D
tenho uma duvida, para fazer a união os campos precisam ser iguais???
exemplo: se na tabela pedido tiver um campo que não tenha na tabela financeiro eu não poderei apresentar ele???
GOSTEI 0
Paulo_amorim
04/06/2004
Olá
No UNION só importa o TIPO
se vc tem 3 campos na t1 e 2 campos na t2, por exemplo, vc pode fazer:
SELECT t1.campo1, t1.campo2, t1.campo3 FROM t1
UNION
SELECT t2.campo1, t2.campo2, ´´ campo3 FROM t2
Observe que no ex. acima não existe ´campo3´ , então eu seleciono um valor vazio qualquer...
Os campos campo1 e campo2, entretanto, devem ser do mesmo tipo (char, number, etc...)
Espero que ajude
Até+
No UNION só importa o TIPO
se vc tem 3 campos na t1 e 2 campos na t2, por exemplo, vc pode fazer:
SELECT t1.campo1, t1.campo2, t1.campo3 FROM t1
UNION
SELECT t2.campo1, t2.campo2, ´´ campo3 FROM t2
Observe que no ex. acima não existe ´campo3´ , então eu seleciono um valor vazio qualquer...
Os campos campo1 e campo2, entretanto, devem ser do mesmo tipo (char, number, etc...)
Espero que ajude
Até+
GOSTEI 0
Mrcdlf
04/06/2004
Olá
No UNION só importa o TIPO
se vc tem 3 campos na t1 e 2 campos na t2, por exemplo, vc pode fazer:
SELECT t1.campo1, t1.campo2, t1.campo3 FROM t1
UNION
SELECT t2.campo1, t2.campo2, ´´ campo3 FROM t2
Observe que no ex. acima não existe ´campo3´ , então eu seleciono um valor vazio qualquer...
Os campos campo1 e campo2, entretanto, devem ser do mesmo tipo (char, number, etc...)
Espero que ajude
Até+
Olá Paulo,
valeu pelas dicas!!! tem ajudado bastante
agora esse campo vazio aqui não funcionou esta dando erro...
se eu usar exemplo: campo3 numeric em t1 e não existir em t2 seria
SELECT t1.campo3 FROM t1
UNION
SELECT ´´ campo3 FROM t2
???
aqui isso não funcionou... usa aspa simples e não tem ponto?
GOSTEI 0
Adilsond
04/06/2004
SELECT t1.campo1, t1.campo2, t1.campo3 FROM t1
UNION
SELECT t2.campo1, t2.campo2, null FROM t2
ORDER BY 1 <- este comando vem apenas no final da uniao
Obs: Não adianta colocar apelido nos campos das demais seleções, pois será dado o nome aos campos sempre da primeira query do union.
UNION
SELECT t2.campo1, t2.campo2, null FROM t2
ORDER BY 1 <- este comando vem apenas no final da uniao
Obs: Não adianta colocar apelido nos campos das demais seleções, pois será dado o nome aos campos sempre da primeira query do union.
GOSTEI 0
Mrcdlf
04/06/2004
SELECT t1.campo1, t1.campo2, t1.campo3 FROM t1
UNION
SELECT t2.campo1, t2.campo2, null FROM t2
ORDER BY 1 <- este comando vem apenas no final da uniao
Obs: Não adianta colocar apelido nos campos das demais seleções, pois será dado o nome aos campos sempre da primeira query do union.
esse campo null não funciona aqui!!!!
???
GOSTEI 0
Adilsond
04/06/2004
Veja o que voce solicitou ????
[list:ea1b470e31]*tabela financeiro*
data controle valor
01/06/2004 2 12,2
06/06/2004 3 10,0
*tabela pedido*
data controle valor
02/06/2004 2 12,2
03/06/2004 2 16,0
06/06/2004 3 10,0
resultado que desejo:
data controle valor
01/06/2004 2 12,2 <- tabela financeiro
02/06/2004 2 12,2 <- tabela pedido
03/06/2004 2 16,0 <- tabela pedido[/list:u:ea1b470e31]
Então sua query ficaria assim:
Agora, se não é isto o que desejas, então infórme o que desejas realmente.
[list:ea1b470e31]*tabela financeiro*
data controle valor
01/06/2004 2 12,2
06/06/2004 3 10,0
*tabela pedido*
data controle valor
02/06/2004 2 12,2
03/06/2004 2 16,0
06/06/2004 3 10,0
resultado que desejo:
data controle valor
01/06/2004 2 12,2 <- tabela financeiro
02/06/2004 2 12,2 <- tabela pedido
03/06/2004 2 16,0 <- tabela pedido[/list:u:ea1b470e31]
Então sua query ficaria assim:
SELECT DATA AS DATA, CONTROLE_CLIENTE AS CONTROLE, VALOR AS VALOR FROM FINANCEIRO UNION ALL SELECT DATA, CONTROLE_CLIENTE, VALOR FROM PEDIDOS ORDER BY 1, 2
Agora, se não é isto o que desejas, então infórme o que desejas realmente.
GOSTEI 0
Mrcdlf
04/06/2004
Veja o que voce solicitou ????
[list:03b03196c3]*tabela financeiro*
data controle valor
01/06/2004 2 12,2
06/06/2004 3 10,0
*tabela pedido*
data controle valor
02/06/2004 2 12,2
03/06/2004 2 16,0
06/06/2004 3 10,0
resultado que desejo:
data controle valor
01/06/2004 2 12,2 <- tabela financeiro
02/06/2004 2 12,2 <- tabela pedido
03/06/2004 2 16,0 <- tabela pedido[/list:u:03b03196c3]
Então sua query ficaria assim:
Agora, se não é isto o que desejas, então infórme o que desejas realmente.
SELECT DATA AS DATA, CONTROLE_CLIENTE AS CONTROLE, VALOR AS VALOR FROM FINANCEIRO UNION ALL SELECT DATA, CONTROLE_CLIENTE, VALOR FROM PEDIDOS ORDER BY 1, 2
bem é isso mesmo que queria... só que ai surgiu outra duvida... os campos tem que ser de mesmo tipo, por acaso ou posso selecinar um que não exista em outra tabela!? essa foi a duvida...
mais quanto ao que desejava inicialmente era aquilo mesmo!
só mai suma duvida... quando vc colcou ´order by 1,2´ seguinfica o q? tudo bem ordernar... mais 1,2?
GOSTEI 0
Adilsond
04/06/2004
só que ai surgiu outra duvida... os campos tem que ser de mesmo tipo, por acaso ou posso selecinar um que não exista em outra tabela!?
Depende do seu banco. Se for paradox, dbase, Interbase utilize o CAST para converter para o tipo desejado. Se for Oracle, DB2 utilize o NULL para trazer nulo no lugar do campo desejado.
só mai suma duvida... quando vc colcou ´order by 1,2´ seguinfica o q? tudo bem ordernar... mais 1,2?
Qdo voce utiliza o union voce não mandar ordenar pelo nome da coluna. O order by aceita voce informar qual a coluna que deseja ordenar pelo índice, começando com 1.
Order by 1, 2 quer dizer, ordene primeiramente pela primeira coluna e em seguida pela sugunda coluna.
GOSTEI 0
Mrcdlf
04/06/2004
[quote:2811506eea]só que ai surgiu outra duvida... os campos tem que ser de mesmo tipo, por acaso ou posso selecinar um que não exista em outra tabela!?
Depende do seu banco. Se for paradox, dbase, Interbase utilize o CAST para converter para o tipo desejado. Se for Oracle, DB2 utilize o NULL para trazer nulo no lugar do campo desejado.
só mai suma duvida... quando vc colcou ´order by 1,2´ seguinfica o q? tudo bem ordernar... mais 1,2?
Qdo voce utiliza o union voce não mandar ordenar pelo nome da coluna. O order by aceita voce informar qual a coluna que deseja ordenar pelo índice, começando com 1.
Order by 1, 2 quer dizer, ordene primeiramente pela primeira coluna e em seguida pela sugunda coluna.[/quote:2811506eea]
o banco é firebird
o cast faz conversão de tipos??? mesmo que seja do mesmo tipo só que com limites diferentes?
GOSTEI 0
Adilsond
04/06/2004
o cast faz conversão de tipos???
Sim
mesmo que seja do mesmo tipo só que com limites diferentes?
Sim
De uma olhada, para saber mais sobre este comando, no help ´Local SQL Guide´ que vem com o delphi.
GOSTEI 0
Mrcdlf
04/06/2004
[quote:f605fd9731]o cast faz conversão de tipos???
Sim
mesmo que seja do mesmo tipo só que com limites diferentes?
Sim
De uma olhada, para saber mais sobre este comando, no help ´Local SQL Guide´ que vem com o delphi.[/quote:f605fd9731]
ok vou dar uma olhada
valeu!!!
GOSTEI 0