有一个表,是记录访客动作的。表jilu的设计如下(作用,记录文章阅读的访客信息和次数用于排序)
id, int
sid, int,
tn,varchar 值可以是unti ,ding,not,hit四种中的一个
date,intid,sid,tn,date
10,10,not,1234567890
11,21,ding,2134569870
25,30,unti,2315698740=============================================================
现在要做的就是,数出sid值相同,tn值相同的总数目 以tn的值来命名,
生成对应的表jilu_temp
表记录中的结果如下id,sid,not,unti,ding,hit
10,10,12,102,0,1023,120(例如这个值)
--------------------
这样可能吗?怎么写啊?SQL语句是怎么样的啊?
id, int
sid, int,
tn,varchar 值可以是unti ,ding,not,hit四种中的一个
date,intid,sid,tn,date
10,10,not,1234567890
11,21,ding,2134569870
25,30,unti,2315698740=============================================================
现在要做的就是,数出sid值相同,tn值相同的总数目 以tn的值来命名,
生成对应的表jilu_temp
表记录中的结果如下id,sid,not,unti,ding,hit
10,10,12,102,0,1023,120(例如这个值)
--------------------
这样可能吗?怎么写啊?SQL语句是怎么样的啊?
试下:
select sid,
sum(if(tn='not',1,0)) as `not`,
sum(if(tn='unit',1,0)) as unit,
sum(if(tn='ding',1,0)) as ding,
sum(if(tn='hit',1,0)) as hit
from jilu
group by sid
order by sid;
as
select sid,
sum(if(tn='not',1,0)) as `not`,
sum(if(tn='unit',1,0)) as unit,
sum(if(tn='ding',1,0)) as ding,
sum(if(tn='hit',1,0)) as hit
from jilu
group by sid
order by sid;
太佩服了。真的太感激了。
====================================================但是还有一个我想问下。
表jilu中的设计是
id,tn,sid,date我想分段选出怎么弄呢?
(分段选出
date值在昨日内的tn==hit 成为yes_hit,
date值在昨日内的t==ding 成为yes_ding,
date值在昨日内的tn==unti 成为yes_tn,
date值在本月内的tn==unti成为 mon_unti,
date值在本年内的tn==unti 成为year_unti
)形成这个表这样又如何写啊?date 的值是来自time()格式的,10位。
怎么不回答一下啊。
后来我用了另外一个句子了。
这个创建临时表的不能用的。而且即使是创建表,但是竟然不能join ,当另外一个表和他left join的时候就不行。
后来我用了select (select from where ) as 了。但是另外的一个问题也帮我解决下啊,大侠~~~
http://community.csdn.net/IndexPage/SmartQuestion.aspx 提问的智慧 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。