Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CrazyLOL

Erro com sub consultas

Recommended Posts

Galera tenho este select aqui

 select a.cod_acervo,
        a.titulo,
        a.qtde,
        a.num_pag,
        a.cod_empresa,
        a.codcoligada,
        a.codfilial,
        a.ativo,
        a.cod_acervo_tipo,
        b.apelido,
        (select (d.nome || '#' || be.data_retirada || '#' ||
                be.data_devolucao || '#' || be.cod_emprestimo) as resultado
           FROM rh_biblioteca_emprestimo be
           left outer join rm.ppessoa d
             on d.cpf = be.colaborador_cpf
          where be.cod_acervo = a.cod_acervo
            and be.data_retirada is not null
            and be.data_devolucao is null) as colaborador
   from rh_biblioteca_acervo a
   left outer join npd_empresas b
     on b.cod_empresa = a.cod_empresa
    and b.codcoligada = a.codcoligada
    and b.codfilial = a.codfilial
  where 1 = 1
    and a.cod_empresa = '9'
    and a.codcoligada = '6'
    and a.codfilial = '1'
    and (select (d.nome || '#' || be.data_retirada || '#' ||
                be.data_devolucao || '#' || be.cod_emprestimo) as resultado
           FROM rh_biblioteca_emprestimo be
           left outer join rm.ppessoa d
             on d.cpf = be.colaborador_cpf
          where be.cod_acervo = a.cod_acervo
            and be.data_retirada is not null
            and be.data_devolucao is null) is not null

E está aparecendo a mensagem "A subconsulta de uma unica linha retorna mais de uma linha" porém, ficou meio complicado , o intuito desse select é verificar se na minha biblioteca quais livros estão emprestado, nesse trecho aqui:

select (d.nome || '#' || be.data_retirada || '#' ||
                be.data_devolucao || '#' || be.cod_emprestimo) as resultado
           FROM rh_biblioteca_emprestimo be
           left outer join rm.ppessoa d
             on d.cpf = be.colaborador_cpf
          where be.cod_acervo = a.cod_acervo
            and be.data_retirada is not null
            and be.data_devolucao is null

eu estou verificando se o a.cod_acervo está com dados se estiver então foi emprestado, mas aparece essa mensagem pode ter casos que tenho 2 exemplares e ficou dois lançamentos para um livro.

 

Alguma ideia de como resolver isso, ou a minha logica está errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um subselect deste tipo só pode retornar no máximo uma linha.

 

Solução , troque o suselect por um join , a linha vai "duplicar" pois pode haver mais um livro emprestado por usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.