返回信息流☆─────────────────────────────────────☆
justk (justk) 于 (Wed May 12 13:52:26 2010) 提到:
现有一个票务情况的表Tickets,有如下字段:
门票编号 | 演出编号 | 是否检票(0代表此票未检,1代表此票已检)
用Sql如何分组显示各场演出的总票数,和已检票数?
即要生成如下的表:
演出编号 | 发放票数 | 已检票数
01 20 5
02 10 2
..........
我用:
select 演出编号, count(是否检票) as 发放票数, (???????????) from Tickets group by 演出编号
可以得到前两个表的字段,但第三个字段“已检票数”不知道怎么得出来。已检票数里存在一个条件判断,即统计每场演出编号是否检票 = 1的个数,请问如何实现?
☆─────────────────────────────────────☆
coolfantasy (Cool) 于 (Wed May 12 15:23:52 2010) 提到:
用两条 SQL 语句就完成了,不用纠结于一条
RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断
☆─────────────────────────────────────☆
chit (chit) 于 (Wed May 12 16:19:17 2010) 提到:
完全同意
呵呵
【 在 coolfantasy (Cool) 的大作中提到: 】
: 用两条 SQL 语句就完成了,不用纠结于一条
: RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断
☆─────────────────────────────────────☆
justk (justk) 于 (Wed May 12 16:59:42 2010) 提到:
我发现如果查询 发放票数 就不知道怎么得出 已检票数
查询已检票数,在where语句里又把记录过滤了,无法得到所有isCheck = 0和1的记录了
貌似两者只能取一查询
不知道有没有方法实现一次都能查询到,呵呵
【 在 coolfantasy 的大作中提到: 】
: 用两条 SQL 语句就完成了,不用纠结于一条
: RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断
: --
: ...................
嗯,我还是分两次查询吧
求教,如果没有逻辑判断怎么能够得到已检票数?不是总得判断isCheck = 1吗
☆─────────────────────────────────────☆
coolfantasy (Cool) 于 (Wed May 12 17:18:59 2010) 提到:
这个问题确实不能说得太深
我觉得 WHERE 字段里的 isCheck = 0 是描述两个集合之间的关系
你需要得到集合 X ,数据里的所有数据为集合 Y
这个关系就是 X = {y | y ∈ Y, y.isCheck = 0},也可以描述成为一个函数
集合论是计算机科学的基础,其实布尔判断也能这样描述,个人认为只是广义和狭义定义的区别
【 在 justk 的大作中提到: 】
: 我发现如果查询 发放票数 就不知道怎么得出 已检票数
: 查询已检票数,在where语句里又把记录过滤了,无法得到所有isCheck = 0和1的记录了
: 貌似两者只能取一查询
: ...................
☆─────────────────────────────────────☆
yypp159 (yypp158) 于 (Wed May 12 18:46:09 2010) 提到:
我不知道我这个想法是否可行。。。题目中有个很好的提示,1就是检了,0就是没检。。。你统计演出编号的和就可以了呀。。先数据类型转换,再进行求和。。10个人有五个人检了那就是1+1+1+1+1+0+0+0+0+0+0。。。。应该可以吧。。。
☆─────────────────────────────────────☆
justk (justk) 于 (Thu May 13 09:20:08 2010) 提到:
大概理解一些了,谢谢
我还是采用两次查询的方式了,其实分两次的话实现还是很简单的,就是查询次数会变多
【 在 coolfantasy 的大作中提到: 】
: 这个问题确实不能说得太深
:
: 我觉得 WHERE 字段里的 isCheck = 0 是描述两个集合之间的关系
: ...................
☆─────────────────────────────────────☆
justk (justk) 于 (Thu May 13 09:22:48 2010) 提到:
想法不错,这样可以不用在where语句中添加isCheck = 1,从而不会过滤掉isCheck = 0的记录,便可以用isCheck的和相加得到检票数了,我回去也试试,谢谢:)
【 在 yypp159 的大作中提到: 】
: 我不知道我这个想法是否可行。。。题目中有个很好的提示,1就是检了,0就是没检。。。你统计演出编号的和就可以了呀。。先数据类型转换,再进行求和。。10个人有五个人检了那就是1+1+1+1+1+0+0+0+0+0+0。。。。应该可以吧。。。
: --
这是一条镜像帖。来源:北邮人论坛 / database / #4449同步于 2010/5/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
[合集] 请教一下sql查询语句
coolfantasy
2010/5/17镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复