[急救,在线等]一条写不出来的SQL语句

时间:2021-05-16 21:53:49
表1——orderform
字段如下:  orderno,userid,bookid,booknum,price,orderdate,state
字段解释:订单号,用户id,书目id,购书数量,总价格,订单日期,订单状态
说明:给表中给每个订单的每一种书分配一条记录


表2——books
字段如下: id,name,editor,pub,pubdate,price,discount
字段解释:书目id,书名,编者,出版社,出版日期,单价,折扣



现在想通过顾客购买情况统计每类书的销量显示给客户,即要获取如下信息:
书目id,书名,编者,出版社,出版日期,单价,折扣,目前销售数量
并且按照销售数量降序排序

请问这个的SQL语句应该则么写?

14 个解决方案

#1


目前销售数量  这个怎么来?

#2


LZ太小气了,才10分。
-------------------------------
select 书目ID,书名,编者,出版社,出版日期,单价,折扣,
(select sum(数量) from orderform where 书目ID=A.书目ID)
from Books A

#3


为什么不再加一个销售数量的字段?书每次被订购时改变这个数量。

#4


:)

不知道是不是楼主要的结果哦,不过按照楼主提的,也只能这样了:)

#5


少了as 目前销售数量
------------------------------------------------------
select 书目ID,书名,编者,出版社,出版日期,单价,折扣,
(select sum(数量) from orderform where 书目ID=A.书目ID) as 目前销售数量
from Books A


另:antigue(蠕蠕)说得很有道理。

#6


二楼的不正确哦
没有GroupBy语句
就算加了GroupBy语句和OrderBy语句
由于使用了Group语句,所以要在GroupBy里面加上其它字段
这样最后的解果就有重复的

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#7


二楼的不正确哦
没有GroupBy语句
就算加了GroupBy语句和OrderBy语句
由于使用了Group语句,所以要在GroupBy里面加上其它字段
这样最后的解果就有重复的
--------------------------------------
不要加Group吧?
1.Books表里每个BookID是唯一的(相当于料品资料),不会重复。
2.select sum(数量) from orderform where 书目ID=A.书目ID
这里已经限定了书目ID=A.书目ID,加个Group by没有任何的作用。

#8


select 书目ID,书名,编者,出版社,出版日期,单价,折扣 from books A
inner join (select 书目ID,sum(数量) from orderform group by 书目ID) B
on A.书目ID=B.书目ID

#9


根据二楼的我用了这样这样——

create view SaleDetails as
select id as 编号,name as 书名,editor as 主编,pub as 出版社,books.price as 原价,discount as 折扣,
(select sum(booknum) from orderform where bookid=id) as 销售量
from Books 
order by 销售量 desc


到时候直接搜索视图不就行了

可是它提示这样:
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

以前没碰到过,请问如何解决?

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#10


创建试图如果使用了 order by 就要用top 

你可以加 top 100 percent 

create view SaleDetails as
select top 100 percent  
id as 编号,name as 书名,editor as 主编,pub as 出版社,books.price as 原价,discount as 折扣,
(select sum(booknum) from orderform where bookid=id) as 销售量
from Books 
order by 销售量 desc

#11


select bookid, min(name), min(editor), min(pub), min(pubdate),
min(price), min(discount), sum(booknum)
from orderform f, books k
where f.bookid=k.id
group by f.bookid

#12


select bookid, min(name), min(editor), min(pub), min(pubdate),
min(price), min(discount), sum(booknum)
from orderform f, books k
where f.bookid=k.id
group by f.bookid
order by sum(booknum) desc

#13


最后一个问题,一定要回答的
怎么给分?

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#14


已节帖,散分了
再次感谢各位!

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#1


目前销售数量  这个怎么来?

#2


LZ太小气了,才10分。
-------------------------------
select 书目ID,书名,编者,出版社,出版日期,单价,折扣,
(select sum(数量) from orderform where 书目ID=A.书目ID)
from Books A

#3


为什么不再加一个销售数量的字段?书每次被订购时改变这个数量。

#4


:)

不知道是不是楼主要的结果哦,不过按照楼主提的,也只能这样了:)

#5


少了as 目前销售数量
------------------------------------------------------
select 书目ID,书名,编者,出版社,出版日期,单价,折扣,
(select sum(数量) from orderform where 书目ID=A.书目ID) as 目前销售数量
from Books A


另:antigue(蠕蠕)说得很有道理。

#6


二楼的不正确哦
没有GroupBy语句
就算加了GroupBy语句和OrderBy语句
由于使用了Group语句,所以要在GroupBy里面加上其它字段
这样最后的解果就有重复的

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#7


二楼的不正确哦
没有GroupBy语句
就算加了GroupBy语句和OrderBy语句
由于使用了Group语句,所以要在GroupBy里面加上其它字段
这样最后的解果就有重复的
--------------------------------------
不要加Group吧?
1.Books表里每个BookID是唯一的(相当于料品资料),不会重复。
2.select sum(数量) from orderform where 书目ID=A.书目ID
这里已经限定了书目ID=A.书目ID,加个Group by没有任何的作用。

#8


select 书目ID,书名,编者,出版社,出版日期,单价,折扣 from books A
inner join (select 书目ID,sum(数量) from orderform group by 书目ID) B
on A.书目ID=B.书目ID

#9


根据二楼的我用了这样这样——

create view SaleDetails as
select id as 编号,name as 书名,editor as 主编,pub as 出版社,books.price as 原价,discount as 折扣,
(select sum(booknum) from orderform where bookid=id) as 销售量
from Books 
order by 销售量 desc


到时候直接搜索视图不就行了

可是它提示这样:
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

以前没碰到过,请问如何解决?

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#10


创建试图如果使用了 order by 就要用top 

你可以加 top 100 percent 

create view SaleDetails as
select top 100 percent  
id as 编号,name as 书名,editor as 主编,pub as 出版社,books.price as 原价,discount as 折扣,
(select sum(booknum) from orderform where bookid=id) as 销售量
from Books 
order by 销售量 desc

#11


select bookid, min(name), min(editor), min(pub), min(pubdate),
min(price), min(discount), sum(booknum)
from orderform f, books k
where f.bookid=k.id
group by f.bookid

#12


select bookid, min(name), min(editor), min(pub), min(pubdate),
min(price), min(discount), sum(booknum)
from orderform f, books k
where f.bookid=k.id
group by f.bookid
order by sum(booknum) desc

#13


最后一个问题,一定要回答的
怎么给分?

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!

#14


已节帖,散分了
再次感谢各位!

--------------------------------------------------------------------
永远的PC火烈鸟...
我的Blog: http://blog.csdn.net/pcfirebird/
欢迎大家一起来切磋!