一个数据库查询方面的问题,请看一下谢谢。

whisp 2003-11-28 04:29:25
刚学数据库不久,被一个问题卡住了,请大家帮忙指点一下。
表CD

CID NAME NUM1 NUM2
1 e 11 222
2 a 21 333
3 b 22 333
4 c 23 444
5 c 23 555
要查讯一共有几种CD
说明:
2,3行的 a和b 虽然名字和NUM1都不同,但是它们的NUM2相同,所以是一种CD
4,5行的 c,虽然在NUM2列有2个值,但从名字可以看出其实只是一种CD

最好能解释一下为什么,不胜感激。
...全文
58 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whisp 2003-11-28
  • 打赏
  • 举报
回复
再问下马可:一般都是 select ** from ** where **
你给的答案最后的AA是什么?
whisp 2003-11-28
  • 打赏
  • 举报
回复
谢谢马可的回复,刚才在SQL上实验了下通过了
虽然一下子还无法完全明白你的解释,不过现在正拿本SQL的书在慢慢消化……谢谢了。
这个论坛好像搞什么钱的吧,怎么给你法?

另外也多谢VIC 和 BEN的建议
回:VICTORYCYZ同一个CD即使有了唯一的编号也不能用这个来判断种类的数量,比如一种CD我买了2张不就2个编号对一种CD么?
回:BENIMARUNIKADO,如果用唯一的CD编号做主键,同时正好一种CD买了2张,那么我举的例子里面的4,5行的情况就不允许出现了(因为c这张光盘要对应2个NUM2值,但是主键只能唯一,故4,5行只能输入一行),然而要是确实有这种情况的话(比如我一张光盘c要对应2本书——即上下册),这2条记录又该怎么办呢?

我不是要驳斥你们,只是原来我也想到过用一个唯一的CD表示,但是后来想到了上面的2个问题,自己无法解决,现在你们正好说起,所以我再提出来。
感觉好像一张表不能很好的表示,是不是拆开作为2张表比较好,但是这个又牵涉到什么E/R模型,范式的问题,所以不知道怎么拆。如果可能,能指点一下么?
Benimarunikado 2003-11-28
  • 打赏
  • 举报
回复
或者楼主将字段含义说得“露”一些,这样会便于沟通理解!
Benimarunikado 2003-11-28
  • 打赏
  • 举报
回复
对啊?最好每一个CD都有一个唯一标识的主键!
方便你查询,也方便我们理解啊!!!
要么用CdID做主键,要么就用自增做主键!
victorycyz 2003-11-28
  • 打赏
  • 举报
回复
感觉你的表建得不合理。

即是同一CD,就应该有一个唯一的ID号。
txlicenhe 2003-11-28
  • 打赏
  • 举报
回复
改一下:
select count(distinct num2) from -- 保证num2不重复
(
select name,max(num2) as num2 from 表 group by name -- 保证name不重复
) aa

或:
select count(distinct name) from
(
select num2,max(name) as name from 表 group by num2
) aa
txlicenhe 2003-11-28
  • 打赏
  • 举报
回复
改一下:
select count(distinct num2) from
(
select name,max(num2) as num2 from 表 group by name
) aa

txlicenhe 2003-11-28
  • 打赏
  • 举报
回复
select count(distinct name) from
(
select name,max(num2) as num2 from 表 group by name
) aa

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧