Suporte » Outros assuntos » Como posso transformar linhas em colunas no mysql?

  • Executei a seguinte consulta para exibir dados do usuário (não sei muito sobre bancos de dados, mas consigo ver os dados necessários).

    SELECT  wu.ID,
            wu.display_name,
            wu.user_email AS E_mail, 
            wc.comment_post_ID AS ID_do_Curso,  
            wc.comment_type, 
            wc.comment_approved, 
            wm.meta_key,
            wm.meta_value,
            CASE wm.meta_key
                WHEN 'start' THEN 'Data da Matrícula'
                WHEN 'percent' THEN 'Porcentagem concluída'
                WHEN 'complete' THEN 'Concluído'
                ELSE 'Unknow'
                END as 'status'
    
    FROM    wp_comments wc,
            wp_users wu,
            wp_commentmeta wm
    
    WHERE   wc.comment_type = 'sensei_course_status' AND 
            wc.user_id = wu.ID AND
            wm.comment_id = wc.comment_ID

    Eu tenho esse resultado
    imagem -> https://i.imgur.com/am8Bciz.png

    Vejo na tabela, por exemplo, que o usuário John Doe tem 3 meta_key diferentes para o ID do curso 41161 (dados da matriz, porcentagem concluída, concluído) com resultado na coluna meta_value. Gostaria que cada linha na coluna meta_key se tornasse uma coluna e seus resultados mostrados abaixo. Como posso fazer isso?

Visualizando 1 resposta (de um total de 1)
  • Marcos Nakamine

    (@marcosnakamine)

    Olá

    Você consegue fazer isso com LEFT JOIN ou com subqueries, segue o exemplo:

    SELECT
    	wu.ID,
    	wu.display_name,
    	wu.user_email AS E_mail,
    	wc.comment_post_ID AS ID_do_Curso,
    	wc.comment_type,
    	wc.comment_approved,
    	( SELECT meta_value
    		FROM wp_commentmeta
    		WHERE
    			comment_id = wc.comment_ID
    			AND meta_key = 'start' ) AS porcentagem_concluida,
    	( SELECT meta_value
    		FROM wp_commentmeta
    		WHERE
    			comment_id = wc.comment_ID
    			AND meta_key = 'percent' ) AS data_da_matricula,
    	( SELECT meta_value
    		FROM wp_commentmeta
    		WHERE
    			comment_id = wc.comment_ID
    			AND meta_key = 'complete' ) AS concluido
    FROM
    	wp_comments wc,
    	wp_users wu,
    	wp_commentmeta wm
    
    WHERE
    	wc.comment_type = 'sensei_course_status' AND
    	wc.user_id = wu.ID AND
    	wm.comment_id = wc.comment_ID
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Como posso transformar linhas em colunas no mysql?’ está fechado para novas respostas.