Ir para conteúdo
annacaro

Query SQL - Joint Rows

Recommended Posts

Oi Pessoal, tudo bem? 

 

Tenho uma table no Mysql que guarda as formas de pagamento de cada venda realizada, porém são até 5 formas de pagamento que podem ser combinadas entre elas. 

No Mysql elas estão sendo gravadas em uma única table e para cada forma de pagamento utilizada é criada uma linha, sendo as colulas: entity_id / method_title/ payment_amount due_date /number_of_installments e value_of_the_installment. Veja exemplo:

 

Table com dados: webpos_order_payment

entity_id method_title payment_amount due_date number_of_installments value_of_the_installment
81 Entrada 341,3      
81 Boleto Bancário 3071,7 20/cada mês 11x U$ 279,25
81 Cartão de Crédito 2142 1 mes antes da viagem 5x U$ 428,00

 

Preciso fazer uma query que coloque todas essas formas de pagamento do mesmo entity_id em uma só linha. 

Consegui achar esse exemplo no fiddle (http://sqlfiddle.com/#!9/7ef46c/2/0) , e tentei adaptar, primeiro só testando 1 dos valores (payment_amount), mas está dando erro quando peço para executar. Alguém poderia me ajudar a entender o que eu fiz de errado para que eu possa finalizar o resto da query com os outros valores também? 

SELECT
    r0.entity_id, 
    r0.method_title, 
    r1.payment_amount AS "PA1",
    r2.payment_amount AS "PA2",
    r3.payment_amount AS "PA3"
   FROM
    (SELECT DISTINCT 
        entity_id, method_title
     FROM 
         order_payment
     ) r0
    LEFT JOIN results r1 
        ON r1.entity_id = r0.entity_id  AND r1.method_title = 'Entrada'
    LEFT JOIN results r2 
        ON r2.entity_id = r0.entity_id  AND r2.method_title = 'Boleto Bancário'
    LEFT JOIN results r3 
        ON r3.entity_id = r0.entity_id  AND r3.method_title = 'Cartão de Crédito'
ORDER BY
    r0.entity_id, r0.method_title ;

Mensagem de erro: 

Error executing query:
Select r0.entity_id, r0.method_title, r1.payment_amount As "PA1", r2.payment_amount As "PA2", r3.payment_amount As "PA3" From (Select Distinct entity_id, order_payment.method_title From order_payment) r0 Left Join results r1 On r1.entity_id = r0.entity_id And r1.method_title = 'Entrada' Left Join results r2 On r2.entity_id = r0.entity_id And r2.method_title = 'Boleto Bancário' Left Join results r3 On r3.entity_id = r0.entity_id And r3.method_title = 'Cartão de Crédito' Order By r0.entity_id, r0.method_title Limit 1000

 

Fico no aguardo da ajuda de vocês e já agradeço de antemão a ajuda. 

 

 

                       

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

Preciso fazer uma query que coloque todas essas formas de pagamento do mesmo entity_id em uma só linha.  

 

 

Tentou com GROUP_CONCAT ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, obrigada por responder... 

Na verdade andei pesquisando sobre o group_concat e na verdade o resultado é diferente do que preciso. Preciso que as linhas se transformem em colunas e no group_concat seria criada apenas uma coluna com separação de pontuação. 

Ex: entity_id        coluna2

       81                  Entrada; 341,30; Boleto Bancário; 3071,7; 20/cada mes; 11x; 

 

Está correto isso sobre o group_concat? Alguma outra sugestão de query? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquise por PIVOT em Mysql , CASE , IIF.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por evandrogoncalves
      Eu preciso que o campo input tenha mais que uma linha, e tenha quebra de linha. Eu estou linkando em um código PHP onde mostrará o conteúdo atual no input e o usuário irá alterar o campo conforme queira, porém quando o texto é longo fica difícil achar o erro por aparecer tudo somente em uma linha. OBS : Tentei usar o TEXTAREA porém não consigo visualizar os dados, só escrever. 
    • Por artur0407
      Boa noite;
       
      Estou realizando testes com a biblioteca PDO para banco de dados com PHP;
      Logo de inicio estou realizando minha conexão com o banco utilizando um código simples nativo da biblioteca.
      No entanto, mesmo errando o código propositalmente e tendo setado todos os possíveis erros e tratando com o bloco "try catch" o php não me retorna erro de nenhuma forma.
       
      Abaixo ambos os códigos;
       
      Primeiro sem erros:
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:host=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Posteriormente com erro proposital (na string de conexão da classe PDO)
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:hst=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Observem que no construtor do pdo, no lugar de host escrevi 'hst' e o php não retorna erros!
       
      Como sou novo aqui, me desculpem algum erro de formatação na mensagem, obrigado!
    • Por BryanSamuel
      Eu gostaria de importar dados de uma planinha que esteja em .xls para mysql, por exemplo, tem uma página html simples onde o usuário vai enviar a planilha, e com isso eu quero importar para uma base de dados, mas tem um porém, por exemplo, tem uma coluna com o número da matrícula de cada aluno, eu gostaria de fazer uma verificação, para que se já existisse um aluno com a matrícula igual, atualizasse somente determinadas colunas, como por exemplo, a coluna turma e a coluna turno, eu sei que parece pedir demais mas eu sou bem novato em php e mysql, se alguém puder ajudar agradeço desde já, abraço. 
      obs. de preferência, se tiver como importar direto de .xls eu agradeço, mas caso só de com .csv também serve
    • Por sobrinnho
      Olá pessoal, sou novo aqui e preciso da ajuda de vocês, fiz um site no dreamweaver CS6 e preciso conectar ele no BD do meu servidor online, no localhost consigo fazer as conexões, mas na hora de configurar pra o online só aparece erros.

    • Por paulaodaregulage
      Boa noite,
      Alguém saberia me dizer, como eu poderia descobrir o caminho de um arquivo no pc pela página web.
       
      assim:
      <form method="post" action="" enctype="multipart/form-data"> <input type="file" name="arquivo" /> <!--ele so mostra o arquivo que foi clicado e n o caminho completo...--> <input type="submit" value="Enviar" /> </form> e ao clicar no arquivo(arquivo.pdf ou video.mp4) desejado ,ele me daria  o caminho deste ,para que eu pudesse enviar  este caminho para meu banco de dados(mysql)
       
      exemplo : pasta1\pasta2\arquivo.pdf
       
      pq estou tendo dificuldades para enviar arquivos em pdf ou mp4 para uma pasta via web
      e desse jeito eu só teria q colocar o arquivo ou o vídeo na pasta manualmente e depois na pagina web eu só teria que clicar neste caminho para que a página encontrasse.
       
       
       

×

Informação importante

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