将两次查询的记录结果混和成一个结果进行输出
中心思想在于将两次查询的结果分别作为一个新的表,将2张新表尽心一次混和查询,一共至少3次查询,成功输出结果表
基本结构为
select * from (select * from datatable1)
下面是我的例子:
select DISTINCT * from (
select A.c as c,A.a as a,A.b as b from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
test_GROUP_BY_3 as C on
A.c = C.c
) as Test1
left join
(select c,cnt from (
select A.c as c,count(C.c) as cnt from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
(select c,b from test_GROUP_BY_3 )as C on
A.c = C.c
group by A.c) as Test) as Test2 on
Test1.c = Test2.c
这样将两个部分通过SQL合并起来,其实是一种比较麻烦的做法,这个功能能在程序里面实现,不过在有2种状况可能用这种方式更好.
1.当我们的程序架构已经固定,你能传递给表示层的数据必须是一个而不是两个datatabel或者dataset的时候,我们不得不在查询阶段将两组数据合并.
2.2组数据是有联系的,如果第二组数据是依赖于第一组数据,同时再表示层的初始化的时候,有些控件必须考第二组数据来确定如何初始化,这样我们在表示层合并并且判断第二组数据可能会更加麻烦.所以这个时候直接把两组数据在数据层合并起来,传给表示层,表示层所需要的仅仅是一个判断,而不需要在遍历第一组数据而安排第二组数据了.
上例分组采用的第一个表的分组,但是count的时候确是count的第三个表.这里如果我们count第三个表,同时以第三个表分组,得到的最后cnt回产生一个null值.如果按照上例,cnt永远不会出现null,最多是0
比如图书馆,图书馆里面同一个名字的书可能有N本,这个时候第三张表记录的count数字表示的是目前馆内还有几本该书。
书的数目应该最少为0,而不是null
中心思想在于将两次查询的结果分别作为一个新的表,将2张新表尽心一次混和查询,一共至少3次查询,成功输出结果表
基本结构为
select * from (select * from datatable1)
下面是我的例子:
select DISTINCT * from (
select A.c as c,A.a as a,A.b as b from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
test_GROUP_BY_3 as C on
A.c = C.c
) as Test1
left join
(select c,cnt from (
select A.c as c,count(C.c) as cnt from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
(select c,b from test_GROUP_BY_3 )as C on
A.c = C.c
group by A.c) as Test) as Test2 on
Test1.c = Test2.c
这样将两个部分通过SQL合并起来,其实是一种比较麻烦的做法,这个功能能在程序里面实现,不过在有2种状况可能用这种方式更好.
1.当我们的程序架构已经固定,你能传递给表示层的数据必须是一个而不是两个datatabel或者dataset的时候,我们不得不在查询阶段将两组数据合并.
2.2组数据是有联系的,如果第二组数据是依赖于第一组数据,同时再表示层的初始化的时候,有些控件必须考第二组数据来确定如何初始化,这样我们在表示层合并并且判断第二组数据可能会更加麻烦.所以这个时候直接把两组数据在数据层合并起来,传给表示层,表示层所需要的仅仅是一个判断,而不需要在遍历第一组数据而安排第二组数据了.
上例分组采用的第一个表的分组,但是count的时候确是count的第三个表.这里如果我们count第三个表,同时以第三个表分组,得到的最后cnt回产生一个null值.如果按照上例,cnt永远不会出现null,最多是0
比如图书馆,图书馆里面同一个名字的书可能有N本,这个时候第三张表记录的count数字表示的是目前馆内还有几本该书。
书的数目应该最少为0,而不是null