none
Consulta para retornar dados de 10 colunas em duas, com critérios pré estabelecidos RRS feed

  • Discussão Geral

  • Olá a todos,

    Preciso de ajuda para saber como fazer uma consulta que retorne 2 colunas, em uma tabela cujos dados estão divididos em 10 colunas.

    No banco de dados (MySQL), será inserida uma tabela com o seguintes campos e dados abaixo:

    Os dados devem retornar na consulta o seu respectivo Codigo, Nome e Data. Mas todos os campos "OF" e "RT", (ambos vão de 1 à 10), devem ficar um "embaixo" do outro, ou seja serem unidos em 2 colunas. Também não retornar o registro que possua o número 4096 quando ele aparecer em qualquer um dos campos "OF". Quando aparecer 0 (zero) no campo "OF" ou no campo "RT", também não retornar registro.

    O resultado da consulta para a tabela da imagem acima, deve ser conforme a imagem abaixo:

    Já tentei criar uma consulta porém não obtive sucesso no resultado.

    Desde já agradeço a ajuda de todos.

    Att

    Eduardo

    • Tipo Alterado Marcos SJ segunda-feira, 25 de janeiro de 2016 11:43 How to
    sexta-feira, 22 de janeiro de 2016 20:12

Todas as Respostas

  • Edu,

    os campos RT e OF tem que ser somados?

    segunda-feira, 25 de janeiro de 2016 12:48
  • Se for items fixos:

    Use essa SQL:

    SELECT Codigo, Nome, Data, OF, RT, RTINDEX FROM (
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF1 AS OF, RT1 AS RT, "1" AS RTINDEX FROM table1 
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF2 AS OF, RT2 AS RT, "2" AS RTINDEX FROM table1
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF3 AS OF, RT3 AS RT, "3" AS RTINDEX FROM table1 
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF4 AS OF, RT4 AS RT, "4" AS RTINDEX FROM table1
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF5 AS OF, RT5 AS RT, "5" AS RTINDEX FROM table1 
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF6 AS OF, RT6 AS RT, "6" AS RTINDEX FROM table1
    UNION ALL
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF7 AS OF, RT7 AS RT, "7" AS RTINDEX FROM table1 
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF8 AS OF, RT8 AS RT, "8" AS RTINDEX FROM table1
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF9 AS OF, RT9 AS RT, "9" AS RTINDEX FROM table1 
    UNION ALL 
    SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF10 AS OF, RT10 AS RT, "10" AS RTINDEX FROM table1
    ) table2
    WHERE (RT <> 0 AND OF <> 0) AND OF <> 4096
    ORDER BY OF, RT


    Fulvio C

    segunda-feira, 25 de janeiro de 2016 13:50
  • Obrigado pela ajuda,

    Sim os campos "OF" e "RT" são fixos, os números são códigos e preciso retorná-los em duas colunas.

    Fulvio eu fiz um teste rápido da sua query utilizando o Banco MS Access, pois estou reinstalando o MySQL, tive a seguinte mensagem:

    "Referência circular causada pelo alias 'Data' na lista SELECT da definição da consulta"

    Ainda não sei como resolver este erro pois meu conhecimento em SQL é pouco, mas obrigado eu vou tentar resolver o problema, você me deu uma grande ajuda.

    Att

    Eduardo

    segunda-feira, 25 de janeiro de 2016 15:01
  • Obrigado pela ajuda,

    Sim os campos "OF" e "RT" são fixos, os números são códigos e preciso retorná-los em duas colunas.

    Fulvio eu fiz um teste rápido da sua query utilizando o Banco MS Access, pois estou reinstalando o MySQL, tive a seguinte mensagem:

    "Referência circular causada pelo alias 'Data' na lista SELECT da definição da consulta"

    Ainda não sei como resolver este erro pois meu conhecimento em SQL é pouco, mas obrigado eu vou tentar resolver o problema, você me deu uma grande ajuda.

    Att

    Eduardo

    Essa SQL foi criada para MYSQL se testar em ACCESS terá esse tipo de problemas, então, por favor faça o teste no MYSQL

    Fulvio C

    segunda-feira, 25 de janeiro de 2016 17:51
  • Fulvio,

    Removi o campo RTINDEX que eu não preciso e o DATE_FORMAT quando executei pelo Access, a query funcionou perfeitamente.

    Meu problema foi resolvido.

    Obrigado novamente pela ajuda.

    Att

    Eduardo

    segunda-feira, 25 de janeiro de 2016 19:58
  • Fulvio,

    Removi o campo RTINDEX que eu não preciso e o DATE_FORMAT quando executei pelo Access, a query funcionou perfeitamente.

    Meu problema foi resolvido.

    Obrigado novamente pela ajuda.

    Att

    Eduardo

    Por nada!!! 

    Fulvio C

    segunda-feira, 25 de janeiro de 2016 20:06