急!急!求高手帮忙一个查询问题!在线等~~

Ternence 2012-01-17 04:23:33
我有两张表 信息分别是

类别表
tid(ID) tname(名称)
1 啊
2 啊
3 啊
4 啊
5 啊
6 啊

信息表
aid(ID) aname(名称) alink(销售量) tid(外键)
1 啊 2000 1
2 啊 1999 1
3 啊 50 2
4 啊 1500 3
5 啊 1501 3
6 啊 2000 3
7 啊 1300 4
8 啊 1800 5
9 啊 1700 6

-----------
我想查询的结果是 按照销售量的 最大值 开始查 信息表,每查一条(最大销售量)数据时,显示信息表的外键。最终目的,显示销售量最大的4个类别ID(不能重复)。

成功后 最终查询的结果为:
tid(信息表或者类别表)
1
3
5
6



求一个sql语句~~~ 小弟新手 求高手帮帮忙 感激不尽~~~ 谢谢了~~~~~~~~
...全文
84 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ternence 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 maco_wang 的回复:]

SQL code
select top 4 tid,sum(alink) as salink from anews t
--where timecol between begintime and endtime 加在这个位置
group by tid
order by salink desc
[/Quote]

谢谢~
叶子 2012-01-17
  • 打赏
  • 举报
回复
select top 4 tid,sum(alink) as salink from anews t
--where timecol between begintime and endtime 加在这个位置
group by tid
order by salink desc
Ternence 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 maco_wang 的回复:]
引用 6 楼 alikeyount 的回复:
类别表 attype
atid(ID) tname(名称)
1 啊
2 啊
3 啊
4 啊
5 啊
6 啊

信息表 anews
aid(ID) aname(名称) alink(销售量) tid(外键)
1 啊 2000 1
2 啊 1999 1
3 啊 50 2
4 啊 1500 3
5 啊 1501 3……


……
[/Quote]





--求和后最好的前4个tid
select top 4 tid,sum(alink) as salink from anews t group by tid
order by salink desc


我anews 里面有一个时间字段 atime 如果我想添加这个按时间段的查询, 条件我应该加在这个sql语句的哪里?? 还在吗??帮忙看一下呗。。谢谢。。
Ternence 2012-01-17
  • 打赏
  • 举报
回复
谢谢 8楼 我运行了 是我想要的效果。 也谢谢各位来帮忙 谢谢了 我结贴了~
叶子 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 alikeyount 的回复:]
引用 5 楼 maco_wang 的回复:

SQL code

declare @T table (aid int,aname varchar(2),alink int,tid int)
insert into @T
select 1,'啊',2000,1 union all
select 2,'啊',1999,1 union all
select 3,'啊',50,2 unio……
[/Quote]
我只是给你的测试数据看的,直接直接运行出结果,你本地有表,不需要一个一个写。
叶子 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 alikeyount 的回复:]
类别表 attype
atid(ID) tname(名称)
1 啊
2 啊
3 啊
4 啊
5 啊
6 啊

信息表 anews
aid(ID) aname(名称) alink(销售量) tid(外键)
1 啊 2000 1
2 啊 1999 1
3 啊 50 2
4 啊 1500 3
5 啊 1501 3……
[/Quote]


--单个值最高的前4个tid
select top 4 tid from anews t where alink
=(select max(alink) from anews where tid=t.tid)
order by alink desc

--求和后最好的前4个tid
select top 4 tid,sum(alink) as salink from anews t group by tid
order by salink desc
Ternence 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 maco_wang 的回复:]

SQL code

declare @T table (aid int,aname varchar(2),alink int,tid int)
insert into @T
select 1,'啊',2000,1 union all
select 2,'啊',1999,1 union all
select 3,'啊',50,2 union all
select 4,'啊',1500,3 uni……
[/Quote]

如果我的数据表里面有N条数据,那么 我都要像这样
select 1,'啊',2000,1 union all
select 2,'啊',1999,1 union all
select 3,'啊',50,2 union all
select 4,'啊',1500,3 uni……
写出来吗?。。 没太明白这个方法。。。 小弟才疏学浅。。麻烦在说详细点呗。。
Ternence 2012-01-17
  • 打赏
  • 举报
回复
类别表 attype
atid(ID) tname(名称)
1 啊
2 啊
3 啊
4 啊
5 啊
6 啊

信息表 anews
aid(ID) aname(名称) alink(销售量) tid(外键)
1 啊 2000 1
2 啊 1999 1
3 啊 50 2
4 啊 1500 3
5 啊 1501 3
6 啊 2000 3
7 啊 1300 4
8 啊 1800 5
9 啊 1700 6

-----------

我把表名写上了。 字段也名字也改了。 麻烦帮我在看一下呗 两位高手 tid=tid 我有点不知道是哪个表的tid了。。
叶子 2012-01-17
  • 打赏
  • 举报
回复

declare @T table (aid int,aname varchar(2),alink int,tid int)
insert into @T
select 1,'啊',2000,1 union all
select 2,'啊',1999,1 union all
select 3,'啊',50,2 union all
select 4,'啊',1500,3 union all
select 5,'啊',1501,3 union all
select 6,'啊',2000,3 union all
select 7,'啊',1300,4 union all
select 8,'啊',1800,5 union all
select 9,'啊',1700,6

--求和结果也是3 1 5 6
select top 4 tid,sum(alink) as salink from @T t group by tid
order by salink desc
/*
tid salink
----------- -----------
3 5001
1 3999
5 1800
6 1700
*/
rucypli 2012-01-17
  • 打赏
  • 举报
回复
select tid,SUM(alink) as 总销量
from 信息表 a join 类别表 b on a.tid=b.tid
group by tid
order by 2
gw6328 2012-01-17
  • 打赏
  • 举报
回复

select top 4 tid,SUM(alink) as 总销量
from 信息表 a join 类别表 b on a.tid=b.tid
group by tid
order by 2 desc
gw6328 2012-01-17
  • 打赏
  • 举报
回复

select tid,SUM(alink) as 总销量
from 信息表 a join 类别表 b on a.tid=b.tid
group by tid
order by 2

叶子 2012-01-17
  • 打赏
  • 举报
回复

declare @T table (aid int,aname varchar(2),alink int,tid int)
insert into @T
select 1,'啊',2000,1 union all
select 2,'啊',1999,1 union all
select 3,'啊',50,2 union all
select 4,'啊',1500,3 union all
select 5,'啊',1501,3 union all
select 6,'啊',2000,3 union all
select 7,'啊',1300,4 union all
select 8,'啊',1800,5 union all
select 9,'啊',1700,6

select top 4 tid from @T t where alink
=(select max(alink) from @T where tid=t.tid) order by alink desc
/*
tid
-----------
3
1
5
6
*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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