喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: 如何一条SQL语句就能统计出多个表中某数据的数量?  
 
Drifter (Drifter)
中级会员
Rank: 3Rank: 3
中级会员



UID 14697
精华 0
积分 254
帖子 292
金钱 254 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2002-6-5
状态 离线
如何一条SQL语句就能统计出多个表中某数据的数量?

假设表分别为 data、data_1
假设数据如下
data
------------------------------------------
id    gid      title
1     1        aaaa
2     1        bbbb
3     1        cccc
4     2        dddd
5     1        eeee
------------------------------------------

data_1
------------------------------------------
id    gid      title
1     1        aaaa
2     2        bbbb
3     1        cccc
4     2        dddd
5     1        eeee
------------------------------------------

统计一个表的sql语句是 select count(id) as num from data where gid='1'

该怎么写才能一次统计出这两个表中,gid为1的数据各有多少条呢?

我这样写好象不对
select
count(data.id) as num1,
count(data_1.id) as num2
from data, data_1
where
data.gid=data_1.gid &&
data.gid='1'

大家帮忙看看呀!谢谢先了。
2006-6-17 10:45 AM#1
查看资料  发短消息  顶部
 
seakingx
金牌会员
Rank: 6Rank: 6


UID 75142
精华 0
积分 1267
帖子 801
金钱 663 喜悦币
威望 0
人脉 604
阅读权限 70
注册 2006-6-18
来自 海口
状态 离线
[推荐阅读] php能否读写二进制的DAT文件
mysql> select * from data;
+------+------+
| gid  | name |
+------+------+
|    1 | a    |
|    1 | b    |
|    2 | xx   |
|    3 | yy   |
|    1 | dd   |
+------+------+
5 rows in set (0.00 sec)

mysql> select * from data1;
+------+------+
| gid  | name |
+------+------+
|    3 | yy   |
|    1 | yy   |
|    2 | yy   |
|    1 | cc   |
+------+------+
4 rows in set (0.02 sec)


mysql> select sum(cnt) cnt ,sum(cnt1) cnt1 from (
    -> select count(1) cnt , 0 cnt1 from data where gid=1
    -> union
    -> select 0 cnt , count(1) cnt1 from data1 where gid=1) A1;
+------+------+
| cnt  | cnt1 |
+------+------+
|    3 |    2 |
+------+------+
1 row in set (0.01 sec)




锐升科技
2006-6-18 09:09 PM#2
查看资料  Blog  发短消息  QQ . .   顶部
 
Drifter (Drifter)
中级会员
Rank: 3Rank: 3
中级会员



UID 14697
精华 0
积分 254
帖子 292
金钱 254 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2002-6-5
状态 离线
[推荐阅读] 上海公司急聘PHP和osCommerce高手,全兼职即可
呵呵,你是CSDN的chjpeng么?
我有一个疑问,为什么要sum(cnt) cnt......呢?
CSDN回答中
select (select count(id)   from data where gid='1') as a,(select count(id)   from data1 where gid='1') as b
就可以直接获得两个表的数量了
2006-6-19 08:48 AM#3
查看资料  发短消息  顶部
 
linren119
注册会员
Rank: 2
初级会员



UID 67545
精华 0
积分 155
帖子 143
金钱 155 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-12-27
状态 离线
[推荐阅读] 上海公司急聘PHP和osCommerce高手,全兼职即可
select
count(a.id),
count(b.id) from data as a, data_1 as b
where
a.gid=b.gid  and
a.gid='1'




纸上得来终觉浅 绝知此事要躬行
2006-6-19 10:10 AM#4
查看资料  发短消息  顶部
 
seakingx
金牌会员
Rank: 6Rank: 6


UID 75142
精华 0
积分 1267
帖子 801
金钱 663 喜悦币
威望 0
人脉 604
阅读权限 70
注册 2006-6-18
来自 海口
状态 离线
[推荐阅读] 上海公司急聘PHP和osCommerce高手,全兼职即可
我在CSDN也叫seakingx  
我的解法是是简单的写法。
想法和你贴出来的语句是类似的, 不过我的语句绕了个弯。

sum(cnt) cnt 就是取 select count(1) cnt , 0 cnt1 from data where gid=1 的结果中的 cnt , 因为另一个查询的 cnt 是 0


select count(1) cnt , 0 cnt1 from data where gid=1
union
select 0 cnt , count(1) cnt1 from data1 where gid=1

这个查询出来是2行 , sum 就是合并为一行,  想了一下, 觉得我写的语句绕了个弯子。




锐升科技
2006-6-19 11:45 AM#5
查看资料  Blog  发短消息  QQ . .   顶部
 
donlinn
新手上路
Rank: 1



UID 69978
精华 0
积分 25
帖子 23
金钱 25 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-21
状态 离线
[推荐阅读] 上海公司急聘PHP和osCommerce高手,全兼职即可
楼上的
偶还是没看懂
2006-6-19 12:34 PM#6
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.998142 second(s), 11 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP