sql语句

zhangji2411 2009-10-26 12:03:25
现有三个表
商品表A(A_ID,A_NAME),
销售部门表B(B_ID,B_NAME),
销售记录表C(C_ID,B_ID,A_ID,C_TIME)

求:销售过所有商品的销售部门号,用一句SQL语句实现
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiaocainiao110 2009-10-26
  • 打赏
  • 举报
回复
select C.B_ID,count(C.B_ID)as countC
from
(select count(1)as countA from A) A,C
where
A.countA = c.countC
group by C.B_ID


我的sql不怎么好,没有试过,大概思路是这样的,你跑跑看,可能稍微修改一下。
小灰狼W 2009-10-26
  • 打赏
  • 举报
回复
或者
select b_id from (
select b_id,count(distinct a_id)c from c
group by b_id)
where c=(select count(1) from a)
小灰狼W 2009-10-26
  • 打赏
  • 举报
回复
只要求销售部门号
就不用关联B表了
楼上的方法要将a.a_id也加上distinct,还要加连接条件才行
可以试试

select t1.b_id
from
(select b_id,count(distinct a_id)c from c group by b_id)t1,
(select count(1)c from a)t2
where t1.c=t2.c
iqlife 2009-10-26
  • 打赏
  • 举报
回复
select C.B_ID as 销售部门号
FROM A,C
GROUP BY C.B_ID
HAVING count(distinct(C.A_ID))=COUNT(A.A_ID)

取这个部门销售的种类数量和总商品的种类数量比较
如果相等就是销售了所有的商品
zhangji2411 2009-10-26
  • 打赏
  • 举报
回复
我是要选出 销售过所有商品的部门号
例如:部门1销售了所有的商品,部门2只销售了其中的几个,这时我只筛选出部门1的信息
lengyunfei006 2009-10-26
  • 打赏
  • 举报
回复
select c.c_id,
(select b.b_name from b where b.b_id=c.b_id),
(select a.b_name from a where a.a_id=c.a_id),
c.c_time
from c

ok?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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