2013-04-02 30 views
0

我認爲這是很難找到我的編輯對我的較早的帖子,所以我做出了新的THEAD:MySQL查詢特定的一年

解決此之後這麼快,我試着打了一下週圍的SQL火車位。現在我試着像以前一樣做,而不是國家/地區,我想在那裏有'類別'(之前發佈的是關於進行查詢的地方,我可以看到美國和世界其他地區的銷售淨額在2007年和2008年的數據庫中,現在我試着用年份和類別開頭的字母'A')當我試圖做出這樣的查詢時,我完全迷失了自我Oo 我想我需要顯示預先實體: (過線=表名)

  • 分類


  • 鈣tegory

  • 類別名稱

  • 產品


  • PRODID

  • 類別
  • 標題
  • 演員
  • 價格

  • orderlines


  • 的OrderID

  • orderlineid
  • 到產品編號

  • 訂單


  • 訂單ID

  • 訂購日期
  • 客戶ID
  • netamount

我的查詢到目前爲止:(絕對背後沒有意義:/)

SELECT year(orderdate) AS YEAR, 
     categoryname, 
     sum(custamot)Totsales FROM 
    (SELECT o.orders, sum(netamount) custamot, c.categoryname 
    FROM products o 
    JOIN categories c ON o.category = c.category 
    WHERE categoryname LIKE 'A%' 
    GROUP BY c.categoryname) iv 
GROUP BY YEAR(orderdate); 
+0

什麼是錯在該查詢... – Rahul

+0

@Rahul,他引用他的SELECT訂購日期卻從來沒有從選擇或加入到訂單表,所以不會僅僅爲此而工作。另外o.orders是沒有意義的,因爲o是產品表,並且它沒有名爲orders的列。 –

回答

0

你不應該需要一個子查詢在所有。只需加入您需要的所有表格,併爲您的聚合編寫合適的分組。你會喜歡的東西最終會:

SELECT YEAR(o.orderdate) AS YEAR, 
     c.Categoryname, 
     SUM(o.netamount) AS Totsales 
FROM orders o 
INNER JOIN orderlines ol ON ol.orderid = o.orderid 
INNER JOIN Products p ON p.ProdID = ol.Prodid 
INNER JOIN categories c ON c.Category = p.Category 
WHERE c.Categoryname LIKE 'A%' 
GROUP BY c.Categoryname, YEAR(o.orderdate);