簡體   English   中英

使用php在mysql中將行顯示為列

[英]display rows as columns in mysql using php

我有桌子

 create table course
 (
    id int not null auto_increment primary key,
    course_name varchar(50),
    level varchar(20),
    course_detail varchar(250)
 );



 insert into course(course_name,level,course_detail) values
 ('c','beginner','datatypes'),
 ('c','beginner','basics'),
 ('c','beginner','variables'),
 ('c','intermediate','functions'),
 ('c','intermediate','loops'),
 ('c','advanced','stacks'),
 ('c','advanced','queues'),

 ('java','beginner','datatypes'),
 ('java','beginner','basics'),
 ('java','beginner','variables'),
 ('java','intermediate','eventlisteners'),
 ('java','intermediate','exeptions'),
 ('java','advanced','jdbc'),
 ('java','advanced','j2ee');

輸出應如下所示:

course_name  beginner   intermediate     advanced
-------------------------------------------------
  c          basics     functions        stacks
  c          datatypes  loops            queues
  c          variables   
  java       basics     eventlisteners   jdbc
  java       datatypes  exceptions       j2ee
  java       variables   

根據我上面的編輯,假定MyISAM或id是代理PK。

SELECT course_name
     , MAX(CASE WHEN level = 'beginner' THEN course_detail END) beginner
     , MAX(CASE WHEN level = 'intermediate' THEN course_detail END) intermediate
     , MAX(CASE WHEN level = 'advanced' THEN course_detail END) advanced
  FROM 
     (
       SELECT x.*
            , COUNT(*) rank 
         FROM course x 
         JOIN course y 
           ON y.course_name = x.course_name 
          AND y.level = x.level 
          AND y.id <= x.id 
        GROUP 
           BY course_name
            , id
     ) a
 GROUP 
    BY course_name,rank;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM