none
Selecionar todos os movimentos RRS feed

  • 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..."

    segunda-feira, 21 de outubro de 2013 09:36

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

    segunda-feira, 21 de outubro de 2013 12:11

Todas as Respostas

  • Bom dia Abraão,
    Mas qual o problema?

    Pelo que pude ver, sua query atende a sua necessidade.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    segunda-feira, 21 de outubro de 2013 11:06
  • 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

    segunda-feira, 21 de outubro de 2013 12:11
  • valeu pela dica gapimex.

    primeiro estava a dar errado, porcausar do from.

    no 1º tinha que por: from Levantamento e no 2º from deposito

    Só assim funcionou...

    mas valeu pela dica do UNION ALL


    "Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."


    segunda-feira, 21 de outubro de 2013 14:34
  • 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..."

    terça-feira, 22 de outubro de 2013 12:37
  • 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

    terça-feira, 22 de outubro de 2013 13:15