这个语句应该如何写?
tableA:
Id Name
1 A
2 B
3 C
tableC:
Id TypeName Time
1 A 2011-07-01 07:30:30
2 A 2011-07-02 07:30:30
3 B 2011-07-03 07:30:30
4 A 2011-07-08 07:30:30
5 B 2011-07-11 07:30:30
6 C 2011-07-16 07:30:30
页面上的搜索条件只有一个:按照时间进行搜索(从什么时候到什么时候)
我要实现的效果是用tableC联tableA取得所有tableA表中的每个Name在什么时候到什么时候的数量
比如从2011-06-28到2011-07-28我要显示的数据是:
A 3
B 2
C 1
请问语句应该怎么写?
[解决办法]
create table tableA(Id int,Name varchar(10))insert into tablea values(1 ,'A')insert into tablea values(2 ,'B')insert into tablea values(3 ,'C')create table tableC(Id int,TypeName varchar(10),Time datetime)insert into tablec values(1 ,'A', '2011-07-01 07:30:30')insert into tablec values(2 ,'A', '2011-07-02 07:30:30')insert into tablec values(3 ,'B', '2011-07-03 07:30:30')insert into tablec values(4 ,'A', '2011-07-08 07:30:30')insert into tablec values(5 ,'B', '2011-07-11 07:30:30')insert into tablec values(6 ,'C', '2011-07-16 07:30:30')go--如果对应的NAME都存在,用俩表关联。select m.name , count(1) cnt from tablea m , tablec n where m.name = n.typename and convert(varchar(10),n.time,120) between '2011-06-28' and '2011-07-28'group by m.name/*name cnt ---------- ----------- A 3B 2C 1(所影响的行数为 3 行)*/--如果可能存在NAME在符合条件的情况在tablec中不存在,需要用0显示,则使用如下的子查询select m.name , cnt = (select count(1) from tablec n where m.name = n.typename and convert(varchar(10),n.time,120) between '2011-06-28' and '2011-07-28')from tablea m /*name cnt ---------- ----------- A 3B 2C 1(所影响的行数为 3 行)*/drop table tablea , tablec