2014-04-09 101 views
-2

我對MySQL的學校時間表表是這樣的:如何多列拆分成多行的SQL(學校時間表)

每天
-------------------------------------------------------------------------------------------- 
SectionID|P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|P20........P35| 
-------------------------------------------------------------------------------------------- 

7個週期,以便5個工作日內在35期表..

我想顯示在日常時間表視圖中的數據,如

------------------------------------------------------------------- 
|P1  |P2  |P3   |P4  |P5  |P6  |P7 | 
------------------------------------------------------------------- 
p1data p2data p3data  p4data p5data p6data  p7data 

p8data p9data p10data  p11data p12data p13data p14data 

p15data p16data p17data  p18data p19data p20data p21data 

..........................................................upto p35data 

使用了jQuery,PHP,MYSQL天 注意:不要爲P8顯示列名在顯示錶P35 ..天塔,同時顯示時間表是我們的心願..

回答

2
select 
    if(p.period=1, t.P1, if (p.period=2, t.P8, if (p.period=3, t.P15, if (p.period=4, t.P22, t.P29)))) as p1, 
    if(p.period=1, t.P2, if (p.period=2, t.P9, if (p.period=3, t.P16, if (p.period=4, t.P23, t.P30)))) as p2, 
... 
from the_table t, 
    (select 1 as period 
     union all 
     select 2 as period 
     union all 
     select 3 as period 
     union all 
     select 4 as period 
     union all 
     select 5 as period) p 

加入人工臺和地方列取決於週期

代替if(),你可以使用CASE/WHEN

0

選擇值,子串(全名,1,CHARINDEX( ' 'P1)-1)爲週期, 子串(P1,CHARINDEX('',P1) +1,LEN(p1))作爲來自表1的週期