Usuário com melhor resposta
Selecionar todos os movimentos

Pergunta
-
Oi pessoal bom dia
tenho uma inquietação. tenho as seguintes tabelas:
Cliente(id_cli,nome_cli,saldo_cli,id_age)
deposito(id_dep,id_cli,valor,data,id_age)
levantamento(id_lev,id_cli,data,id_age)
agencia(id_age,nome_age)
eu pretendo fazer um select que me retorna quaisquer movimentacões que os clientes fizeram. ordenado por data
estou a usar a seguinte sintaxe.
select N.conta, N.nome, A.valor,A.data,C.nome_age,B.valor,B.data,C.nome_age from cliente N left join levantamento as A on N.id_cliente=A.id_cliente left join deposito as B on N.id_Cliente=B.id_cliente left join agencia as C on A.id_age=C.id_age and B.id_age=C.id_age order by data asc
eu quero que me aparece assim:
1 joao 2.000.00 12-12-2013 agencia 1 'levantamento'
2 miguel 2.000.00 12-10-2013 agencia 1 'deposito'
1 joao 0.000.00 12-10-2013 agencia 1 'deposito'
obs: o mais importante é ele mostrar tudo que se fez na tabela (deposito e levantamento) ordenando por data.
"Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."
Respostas
-
Bom dia,
Abraão, não sei se entendi corretamente mas experimente fazer um teste com a query abaixo para ver se é o que você procura:
select N.conta, N.nome, A.valor, A.data, C.nome_age, 'levantamento' as TipoMovimento from cliente N left join levantamento as A on N.id_cliente = A.id_cliente left join agencia as C on A.id_age = C.id_age union all select N.conta, N.nome, B.valor, B.data, C.nome_age, 'deposito' from cliente N left join deposito as B on N.id_Cliente = B.id_cliente left join agencia as C on B.id_age = C.id_age order by data asc
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Joaquim Costa (Abraão) segunda-feira, 21 de outubro de 2013 14:31
Todas as Respostas
-
-
Bom dia,
Abraão, não sei se entendi corretamente mas experimente fazer um teste com a query abaixo para ver se é o que você procura:
select N.conta, N.nome, A.valor, A.data, C.nome_age, 'levantamento' as TipoMovimento from cliente N left join levantamento as A on N.id_cliente = A.id_cliente left join agencia as C on A.id_age = C.id_age union all select N.conta, N.nome, B.valor, B.data, C.nome_age, 'deposito' from cliente N left join deposito as B on N.id_Cliente = B.id_cliente left join agencia as C on B.id_age = C.id_age order by data asc
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Joaquim Costa (Abraão) segunda-feira, 21 de outubro de 2013 14:31
-
valeu pela dica gapimex.
primeiro estava a dar errado, porcausar do from.
mas valeu pela dica do UNION ALLno 1º tinha que por: from Levantamento e no 2º from deposito
Só assim funcionou...
"Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."
- Editado Joaquim Costa (Abraão) segunda-feira, 21 de outubro de 2013 14:42
-
oi gapimex, encontrei mas um problema!
eu pretendo fazer um select com condição ou procurar por uma conta.
tipo:
--PROCEDIMENTO PARA PROCURAR @CONTA NCHAR(50) AS BEGIN select bla bla bla union all bla bla bla WHERE N.conta like @CONTA + '%' --PROCEDIMENTO PARA SELECIONAR @CONTA NCHAR(50) AS BEGIN select bla bla bla union all bla bla bla WHERE N.conta = @CONTA
mas está a me retornar os mesmos dados da tabela sem obedecer a condição dada.
"Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."
-
Olá,
Experimente adicionar um Where para cada Select da query (apenas o Order By é único para toda a query). Ex:
select * from Tabela1 as t1 where t1.Conta = @Conta union all select * from Tabela2 as t2 where t2.Conta = @Conta
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br