| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 466 人关注过本帖
标题:如何用这个 group by 呢?
只看楼主 加入收藏
QQ342151559
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-10
收藏
 问题点数:0 回复次数:3 
如何用这个 group by 呢?
表C_History:
程序代码:
C_ID            T_ID
20120102    0102
20120103    0102
20120104    0102
20120105    0103
20120106    0204
20120107    0204
20120108    0204
20120109    0103
20120110    0103
....



每一个独立 C_ID对应一个T_ID,C_ID是不重复,但T_ID可以重复。
表P_History:
程序代码:
C_ID            M_ID    P_ID
20120102    01001    0
20120103    01001    0
20120104    01001    1
20120105    01003    1
20120106    02001    0
20120107    02001    2
20120108    02001    0
20120109    02001    1
20120110    02002    2
。。。


获得如下结果:
程序代码:
T_ID    M_ID    P_ID    Count_P    Count_Total    Ratio
0102    01001    0    2    3    67%
0102    01001    1    1    3    33%
0102    01001    2    0    3    0%
0102    01003    0    0    0    0%
0102    01003    1    0    0    0%
0102    01003    2    0    0    0%
0103    01001    0    0    0    0%
0103    01001    1    0    0    0%
0103    01001    2    0    0    0%
0103    01003    0    0    2    0%
0103    01003    1    1    2    50%
0103    01003    2    1    2    50%
0204    02001    0    2    4    50%
0204    02001    1    1    4    25%
0204    02001    2    1    4    25%


搜索 T_ID,M_ID的个数(Count_Total),以及T_ID,M_ID By P_ID的个数(Count_P),Ratio=(Count_P/Count_Total)*100
这个 搜索语句怎么写呢?如何获取 Count_Total呢,
搜索更多相关主题的帖子: color 如何 
2013-08-07 22:51
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
没看懂。

不知你是不是要这样的结果:
T_ID    M_ID    P_ID    Count_P    Count_Total    Ratio
0102    01001    0    2    3    66.67
0102    01001    1    1    3    33.33
0103    01003    1    1    1    100
0103    02001    1    1    1    100
0204    02001    0    2    3    66.67
0204    02001    2    1    3    33.33
0103    02002    2    1    1    100


由3个查询得到。
查询1:
SELECT C_History.T_ID, P_History.M_ID, count(P_History.P_ID) AS Count_Total
FROM C_History INNER JOIN P_History ON C_History.C_ID=P_History.C_ID
GROUP BY P_History.M_ID, C_History.T_ID;
执行结果:
T_ID    M_ID    Count_Total
0102    01001    3
0103    01003    1
0103    02001    1
0204    02001    3
0103    02002    1



查询2:
SELECT C_History.T_ID, P_History.M_ID, P_History.P_ID, Count(P_History.P_ID) AS Count_P
FROM C_History INNER JOIN P_History ON C_History.C_ID=P_History.C_ID
GROUP BY C_History.T_ID, P_History.M_ID, P_History.P_ID;

执行结果:
T_ID    M_ID    P_ID    Count_P
0102    01001    0    2
0102    01001    1    1
0103    01003    1    1
0103    02001    1    1
0103    02002    2    1
0204    02001    0    2
0204    02001    2    1


查询3:
SELECT 查询2.T_ID, 查询2.M_ID, 查询2.P_ID, 查询2.Count_P, 查询1.Count_Total, Round(查询2.Count_P/查询1.Count_Total*100,2) AS Ratio
FROM 查询2 INNER JOIN 查询1 ON (查询2.T_ID = 查询1.T_ID) AND (查询2.M_ID = 查询1.M_ID);

执行查询3 得到上面的结果。
执行查询3时,不需要再执行 查询1和查询2,会自动调用,我不知道VB 里会不会也这样自动,应该会的。


对应的表的内容如下:
C_ID    T_ID
20120102    0102
20120103    0102
20120104    0102
20120105    0103
20120106    0204
20120107    0204
20120108    0204
20120109    0103
20120110    0103


C_ID    M_ID    P_ID
20120102    01001    0
20120103    01001    0
20120104    01001    1
20120105    01003    1
20120106    02001    0
20120107    02001    2
20120108    02001    0
20120109    02001    1
20120110    02002    2

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-08 09:59
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
程序代码:
Private Sub Form_Load()

'事后绑定
'连接数据源,打开表
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VB精简版\mdb\db1.mdb;Persist Security Info=False"
Adodc1.RecordSource = "查询3"
'Adodc1.Refresh

'绑定
Set DataGrid1.DataSource = Adodc1

End Sub


VB 能执行写好的 查询3,代码如上。使用的是 事后绑定。

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-08 10:07
QQ342151559
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-10
收藏
得分:0 
呵呵已经解决,非常抱歉现在才回复...
2013-09-21 11:38
快速回复:如何用这个 group by 呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017915 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved