请忽略它是否是一个非常基本的问题,因为我不擅长SQL并且必须开发查询我google并且无法获得我想要的结果。
我有两张桌子
产品
ProductID, ProductName, Descritpion
2010 A xyz
2011 B uyt
2012 C jkj
以及下面的销售
Sales
SalesID, ProductID, SaleDate, Status
1 2010 10-Dec-2013 K
2 2010 10-Dec-2013 u
3 2011 11-Dec-2013 i
我必须开发一个查询,它将返回日常销售数量,如下所示
ProductName, TotalSaleCount, SaleDate
A 2 10-Dec-2013
我开发了以下查询
SELECT productid,
Count(1)
FROM sales
WHERE saledate = Trunc(sysdate - 1)
GROUP BY productid
以上查询返回productid with count但我想要productname with count以便我如何将sales表与产品联系起来?
此致
答案 0 :(得分:1)
只需加入Product
表:
SELECT productname, COUNT(*)
FROM Sales
JOIN Product ON Sales.productid = Product.producyid
WHERE saledate = TRUNC(SYSDATE - 1)
GROUP BY ProductName
答案 1 :(得分:1)
试试这个:
select t1.PRODUCTNAME,count(t1.PRODUCTNAME) as TotalSaleCount,t2.SALEDATE from Product t1 , Sales t2
where t1.ProductID = t2.ProductID AND saledate = TRUNC(SYSDATE - 1)
GROUP BY t2.SALEDATE,t1.PRODUCTNAME;
答案 2 :(得分:1)
这是一个与现有答案略有不同的答案;
SELECT Product.ProductName, TotalSales.TotalSaleCount, TotalSales.SaleDate
FROM Product
JOIN (SELECT ProductId, SaleDate, COUNT(*) as TotalSaleCount
FROM Sales
GROUP BY ProductId, SaleDate) TotalSales
ON TotalSales.ProductId = Product.id
结果应与现有的一些答案相同
然而,此版本可能(但无法保证)更快 - 选择的列更有可能拥有索引,并且也是索引的更好选择; ProductName
通常不是一个很好的列,可以作为此类索引的开头,并且(取决于优化程序实际上有多聪明),因为它不是{{1}的一部分},对优化器没用。