如何在sql中将多列拆分成多行(用于学校时间表)

时间:2014-04-09 09:53:16

标签: php jquery mysql sql jquery-ui

我在mysql中的学校时间表表是这样的:

--------------------------------------------------------------------------------------------
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
,持续5天 注意:不要在显示表中显示P8到P35的列名。日期列显示时间表是我们的愿望..

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

选择值,子串(FullName,1,Charindex(',',p1)-1)作为句点, 子串(p1,Charindex(',',p1)+ 1,LEN(p1))作为周期 来自表1