在我的库中查找已售出商品的名称(mysql)

时间:2016-05-13 11:12:24

标签: mysql aggregate-functions

我有家庭作业,并且在某一点上stuck。我有7个表用于我的数据库。这些是products-books-movies-musics-transactions-users,对于多对多的关系,有表transproduct。所以我想找到数据库中最畅销的商品,其中包含产品的名称和类型以及该产品的销售数量。 İnshorttransproduct持有交易,产品和数量,产品持有名称,类型等。 我写了一个这样的查询:

select Barcode,sum(quantity) 
  from transproduct 
  group by Barcode;

它给了我产品的条形码和该项目的销售数量;例如;

12345  15

13452  2
etc...

所以我试图使用这两个表并写出像那样的

select Barcode,max(summ) from(
select Barcode,sum(quantity) as summ 
  from transproduct 
  group by Barcode ) as t1; 

但是它没有给我大多数商品的产品ID,它给出了最小产品ID和最大销售产品的销售数量。我想得到一张这样的表

productName|productType|Quantity

Back To Black|Music|53

我很困惑,所以我知道我无法清楚地解释自己,但谢谢你能帮助......

我正在使用的表格:

create table transproduct(
transactionID char(9),
Barcode char(5),
quantity integer(5),
constraint pktransproduct primary key (transactionID, Barcode));

alter table transproduct add constraint fktransproducttransaction
foreign key (transactionID) references transactions(transactionID);

alter table transproduct add constraint fktransproductproduct
foreign key (Barcode) references product(Barcode);

create table product(
Barcode char(5),
productName nvarchar(50),
quantity integer(6),
price double,
ProductType varchar(11),
constraint pkproduct primary key (Barcode));

这些是来自产品的一些样本数据

'12345', 'A Head Full Of Dreams', '2', '7.5', 'Music'
'46089', 'Ride The Lightning ', '31', '19.99', 'Music'
'46792', 'Back to Black', '21', '13.5', 'Music'

这些是来自transproduct的一些样本数据

'164571349', '13762', '3'
'496272753', '14532', '13'
'365725914', '14532', '2'

要清楚,因为你可以看到产品'14532'卖了15次,它是最畅销的商品,所以我想得到像

这样的表
'Of Mice And Men','Book','15'

现在我正在使用这个查询,它的工作原理,但我不认为它的效率

select productName,ProductType,r from(
select Barcode as b ,max(summ) as r from(
select Barcode,sum(quantity) as summ 
  from transproduct 
  group by Barcode order by  sum(quantity) desc )as t1)as t2,product where    b=product.Barcode;

1 个答案:

答案 0 :(得分:0)

如果您的转码表中有此产品,为什么不尝试按产品名称对其进行分组。

    select Barcode,sum(quantity) 
    from transproduct 
     group by productname;

会更好如果您可以提供表格和一些示例数据的模式。