Ir para conteúdo
Fórum Script Brasil
  • 0

MySQL subquery


flaviozantut

Pergunta

Bom dia.

Tenho uma tabela onde os campos estão da seguinte forma:

Campo1 campo2 campo3

Item1 item1id descriçao1

Item2 item2id descriçao2

Item1 item1id descriçao1

E preciso fazer uma consulta onde me retorne:

Item1 item2

item1id item2id

descriçao1 descriçao2

Eu já criei a seguinte query:

SET @FILIAL=1,@FICHARIO = 271;
SELECT
    DISTINCT id.cardId id,
    numRnc.COD_VALOR numRnc, 
    WKDef.COD_VALOR WKDef,
    dataAbertura.COD_VALOR dataAbertura,
    EmitenteProduto.COD_VALOR EmitenteProduto,
    obs.COD_VALOR obs,
    dataFechamento.COD_VALOR dataFechamento
    FROM(
        SELECT 
            DISTINCT f.NR_FICHA cardId,
            f.NR_VERSAO cardVersion,
            f.COD_VALOR
            FROM
                  ficha f
                WHERE 
                f.NR_FICHARIO = @FICHARIO
                  AND f.COD_EMPRESA = @FILIAL 
                AND f.NR_VERSAO = (
                        SELECT 
                            MAX(m.NR_VERSAO) 
                            FROM
                                ficha m 
                                WHERE
                                    m.NR_FICHARIO = @FICHARIO
                                    AND m.COD_EMPRESA = @FILIAL
                                    AND m.NR_FICHA = f.NR_FICHA 
                    )
                AND (SELECT 
                        `VERSAO_ATIVA`+0 
                        FROM
                            `documento` d
                            WHERE
                                d.`NR_DOCUMENTO` = f.NR_FICHA
                                AND d.`COD_EMPRESA` = @FILIAL 
                                 AND d.`NR_VERSAO`    = f.NR_VERSAO)    
    )id,
    (
        SELECT
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                    fN.cod_campo = 'numRnc' 
                    AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL
    ) numRnc,
    (
        SELECT 
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                      fN.cod_campo = 'WKDef'
                      AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL 
    )WKDef,
    (
        SELECT 
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                      fN.cod_campo = 'dataAbertura'
                      AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL
    ) dataAbertura,
    (
        SELECT 
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                      fN.cod_campo = 'EmitenteProduto'
                      AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL
    ) EmitenteProduto,
    (
        SELECT 
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                      fN.cod_campo = 'obs'
                      AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL
    )obs,
    (
        SELECT 
            COD_VALOR,
            NR_FICHA
            FROM
                  ficha fN
                WHERE
                      fN.cod_campo = 'dataFechamento'
                      AND fN.NR_FICHARIO = @FICHARIO
                    AND fN.COD_EMPRESA = @FILIAL
    )dataFechamento
    WHERE
         WKDef.COD_VALOR = 'rncFornecedor'
        AND numRnc.NR_FICHA = id.cardId
        AND WKDef.NR_FICHA = id.cardId
        AND dataAbertura.NR_FICHA = id.cardId
        AND EmitenteProduto.NR_FICHA = id.cardId
        AND obs.NR_FICHA = id.cardId
        AND dataFechamento.NR_FICHA = id.cardId

Mas a cada novo item que preciso adicionar ele faca muito mais lenta.

Se houver uma outra forma de fazer isso e alguém puder me ajudar agradeço.

Editado por flaviozantut
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...