2013-10-07 37 views
3

我有以下三個表格(僅出於表示原因顯示必填字段)。訪問數據庫的複雜查詢設計

表 'product_master'

ID ProductName 
1 Jens 
2 T-shirt 
3 Shirt 
4 Cap 

表 '賬單'

ID Invoiceno Date 
1 INV001  19/9/2013 
2 INV002  20/9/2013 
3 INV003  20/9/2013 

表 'billDetails'

ID Invoiceno Productid  Qyt 
1 INV001    1    2 
2 INV001    2    3 
3 INV001    4    1 
4 INV002    2    1 
5 INV002    3    2 
6 INV003    1    3 
7 INV003    4    2 

輸出欲

SalesReport

ProductName TotalSales Date 
Jens    2   19/9/2013 
T-shirt    4   19/9/2013 
Shirt    2   19/9/2013 
Cap     1   19/9/2013 
Jens    3   20/9/2013 
T-shirt    0   20/9/2013 
Shirt    0   20/9/2013 
Cap     2   20/9/2013 

(每日之間任何兩個日期)這個查詢沒有工作:

 SELECT 
     [PM.product_master], [SUM(IM.Qyt)], [BM.Date] FROM 
     [product_master] AS PM 
     INNER JOIN 
     [billDetails] AS IM 
     ON 
     [PM.sno] = [IM.prod_sno] 
     INNER JOIN 
     [bill] AS BM 
     ON 
     [IM.Invoiceno] = [BM.Invoiceno] 
+0

+1問一個好問題。你的SELECT的輸出是什麼? –

+0

它給出了語法錯誤。和其他查詢,我嘗試它給了我錯誤的選擇數據 – Archit

+0

請告訴我們確切的錯誤信息... –

回答

3

現在我要像這樣SalesReport輸出(每日任選兩天 日期)

爲了計算每天的總銷售額,您必須按日期獲得group數據。要指定期限,您必須使用having條款。

SELECT product_master.ProductName, Sum(billDetails.Qty) AS SumOfQty, bill.Dated 
FROM bill 
INNER JOIN (
product_master INNER JOIN billDetails ON product_master.ID = billDetails.ProductId 
) ON bill.InvoiceNo = billDetails.InvoiceNo 
GROUP BY product_master.ProductName, bill.Dated 
HAVING bill.Dated Between #9/19/2013# And #9/20/2013# 
ORDER BY bill.Dated, product_master.ProductName 
+0

感謝它的工作+1並接受作爲答案 – Archit

+0

很高興爲您服務! – Abhitalks

1

嘗試此查詢

select product_master.ProductName 
     ,SUM(billDetails.Qyt) as TotalSales 
     ,bill.Date 
from billDetails 
inner join bill on billDetails.Invoiceno = bill.Invoiceno 
inner join product_master on product_master.Id = billDetails.Productid 
+0

它也給出了語法錯誤 – Archit

+0

你可以給我我們的數據庫腳本! –

+0

訪問數據庫我如何給db腳本? – Archit