| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:[讨论]关于select子查询的问题
只看楼主 加入收藏
3las
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-6-10
收藏
 问题点数:0 回复次数:8 
[讨论]关于select子查询的问题

假设Table的数据内容如下:
ProductID TypeID IsFault
-----------------------------------
6072 1 1
6072 1 0 <----这里CountOfFault++
6072 1 0 <----这里CountOfFault不变,因为该ProductID已经计算过了
5780 1 1
5780 1 1

6115 2 1
5781 2 0 <----这里CountOfFault++
5781 2 1

6098 2 1
6038 2 1

5998 2 0 <----这里CountOfFault++
-----------------------------------

现在我想得到这样的数据:
TypeID CountOfType CountOfFault
----------------------------------------------------------------------
1 2 1
2 4 2
----------------------------------------------------------------------

注:
TypeID:类型ID
CountOfType:每个TypeID中ProductID的个数(非重复值)
CountOfFalt:该字段是分类统计不同的TypeID中相同ProductID里bit出现0的个数

想了大半天,终于给我凑出来了,唉~~水平有限~~~
select TypeID,
CountOfType = count(distinct ProductID),
CountOfFault =
(select count(distinct ProductID) from Table Table_Temp
where Table.TypeID = Table_temp.TypeID and IsFault = 0)
from Table
group by Table.TypeID

接下来问题来了:
如果Table是由Table1和Table1两张表分开存储的。
Table1数据如下:
ProductID IsFault
-----------------------------------
6072 1
6072 0
6072 0
5780 1
5780 1

6115 1
5781 0
5781 1

6098 1
6038 1

5998 0
-----------------------------------

Table2数据如下:
ProductID TypeID
-----------------------------------
6072 1
6072 1
6072 1
5780 1
5780 1
6115 2
5781 2
5781 2
6098 2
6038 2

5998 2
-----------------------------------

那么这个查询的该这么写呢?

[此贴子已经被作者于2006-6-26 15:33:51编辑过]

搜索更多相关主题的帖子: select 查询 
2006-06-26 14:14
liutong606
Rank: 1
等 级:新手上路
帖 子:34
专家分:7
注 册:2006-6-24
收藏
得分:0 
   看了一下   水平有限   对不住啊

2006-06-26 14:41
3las
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-6-10
收藏
得分:0 
没关系。。耐心等待斑竹大人驾到

[此贴子已经被作者于2006-6-26 14:46:43编辑过]

2006-06-26 14:45
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 

用ProductID间Inner Join以后,当成一个表来查询


2006-06-26 14:47
3las
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-6-10
收藏
得分:0 
select Table2.TypeID,
CountOfType = count(distinct Table1.ProductID),
CountOfFault = (select count(distinct Table1.ProductID) from Table1 Table_Temp
where Table2.TypeID = Table_temp.TypeID and Table1.IsFault = 0)
from Table1 inner join Table2 on Table1.ProductID = Table2.ProductID
group by Table2.TypeID

这样?会不会有问题呢?
2006-06-26 14:58
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
没有关联,不要写成相关子查询

2006-06-26 15:03
3las
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-6-10
收藏
得分:0 
不明白
2006-06-26 15:16
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 


看错了,测试下来没有问题应该就可以了

2006-06-26 15:21
林升
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2006-6-12
收藏
得分:0 
呵呵,欣赏中

我是菜鸟,我怕谁!!!!!!!!!!!!!!!
2006-07-05 11:41
快速回复:[讨论]关于select子查询的问题
数据加载中...
 
   



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

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