作者okdla (跟着乡民进来看热闹)
看板PHP
标题Re: [请益] 关於大笔资料的统计
时间Tue Mar 4 19:50:38 2008
: 也可以尝试用php解决, 先用性别和分数做区分再跑一个for去统计
: SELECT A.sex, B.grade, count(*) FROM A, B
: WHERE A.fid = B.fid
: GROUP BY A.sex, B.grade
: ORDER BY A.sex, B.grade
: 应该会得到
: sex grade count(*)
: F 0 X
: F 1 X
: ..
: F 100 X
: M 0 X
: M 1 X
: ..
: M 100 X
: 然後for去把count加起来, 这样就只有一个sql qurey和O(200)的回圈
: 或者0~50范围比较大, 独立一个sql query, 其他的一个query再搭配for
: 这样应该会比较快吧?
: : .
: : .
: : .
: : .
: : fid是学生编号为唯一值,sex是性别,grade是成绩
: : 大概是要做出一个如下的统计表
: : 0-50 50-60 60-70 70-80 80-90 90-100
: : ------------------------------------
: : 男笔数
: : 女笔数
: : 是我指令下错了吗???还是php跑的本来就很慢呢???
: : 建view的话速度可以变快吗???要如何建呢??
那如果是要做出一个学生姓别和选修的科目(复选)的比较呢??
比如说:选修的科目(20个)放在 C 表格里面,分别以c1,c2,c3..c20栏位代表,
栏位型态为tinyint,如果1为有选择,0为没有选择,要做出如下表格
c1 c2 c3 c4......c20
-----------------------------
男笔数
女笔数
如果说要用 select count(*),A.sex,C.c1.C.c2,C.c3....,C.c20 from A left join C
on A.pid=C.pid group by sex,c1,c2...,c20,来计算出如上的表格,这样不是更慢吗??
所以只能够用
select count(*) from A left join C on A.pid=C.pid where A.sex='F' and C.c1=1
select count(*) from A left join C on A.pid=C.pid where A.sex='M' and C.c1=1
.
.
的方式去跑..但是算出来还是非常的慢
只能说不知道是mssql的问题还是php连mssql的问题了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.230.162.86