2014-10-22 37 views
0

我想使用多個語句進行此查詢,但我不知道如何。請幫幫我。謝謝! :)如何在具有多個select語句的mysql中進行此查詢?

SELECT 
     customerNumber AS 'Customer Number', 
     customerName AS ' Customer Name', 
     quantityordered AS 'Quantity Ordered', 
     amount AS 'Amount', 
     SUM(quantityOrdered*amount) AS 'Total Amount' 
    FROM 
     customers 
     INNER JOIN orders USING (customerNumber) 
      INNER JOIN orderdetails USING (orderNumber) 
     INNER JOIN payments USING (customerNumber) 
    WHERE 
     quantityOrdered >= 50 
    GROUP BY 
     customerName 
    HAVING 
     COUNT(quantityOrdered) > 5 
    ORDER BY 
     3; 
+0

爲什麼要在多個問題中使用此功能。這確定了一個查詢。你從多個表中獲得不同的數據結果。如果你想從不同的表中選擇不同的選擇問題,那麼按照我的答案 – 2014-10-22 11:47:50

+0

小心!你濫用MySQL擴展到GROUP BY。您可能會使用此查詢檢索不正確的'quantityordered'和'amount'值。請閱讀:http://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html – 2014-10-22 11:49:49

+0

您的查詢未定義足夠的信息。 – 2014-10-22 11:52:05

回答

-1

根據您的情況和提供的數據解釋我已經得到這種類型的東西..希望它會幫助你。

select * from orders where customerNumber == ''; 

select * from orderdetails where orderNumber == ''; 

select * from payments where customerNumber == ''; 

select SUM(o.quantityOrdered * p.amount) as 'quantityOrdered' from orders o, payments p where o.orderId == p.orderId; 
+0

甚至沒有接近該人的要求。 – DRapp 2014-10-22 12:15:05

+0

根據我的理解,我發佈了..謝謝DRapp – 2014-10-22 16:28:31

0

太多在評論中解釋......您的查詢沒有意義,它可能是由於缺乏對羣組的瞭解和具有上下文。我會首先開始你的查詢應該把所有的列引用爲「table.column」或「alias.column」,所以我們知道列的起源與猜測。

的「集團通過」適用值的集合(如您的數量*量的SUM())由給定組由(客戶名稱)。但是,如果您在子級表中有多個記錄(例如:某人的多次付款,那麼您的計數和金額可能會意外重複)。此外,您還有一個按客戶名稱分組的羣組......如果您有5個不同的人稱爲「吉姆」,但他們是完全不同的人。您應該按照其獨特的customerNumber進行分組,這將導致5個不同的「Jim」記錄與其各自唯一的客戶號碼。

QtyOrd> 50的Where子句意味着只有那些單個訂單項購買(假定)訂單詳細信息,包含數量爲50或更多的數量纔會包含在內,而不管訂購的訂單數量是多少,即使訂單數量相同如果那是你想要的,這是可以的。

最後,你有計數的第()> 5,這似乎只希望那些由where子句爲合格誰下令至少5米不同的東西與50個或更多數量的客戶。

順序由3表示要通過自然升序排序(VS下降會在最頂層的數量,在底部至少數量)訂購的數量。

之所以這麼說,你有一個額外的加入到你的支付表。這裏可能會出現重複...如果您的訂單有2或3筆付款,則您的2個訂單項的訂單剛剛變成4或6作爲最終計數。

知道了這些,你可能想在你試圖讓你原來的問題更好地描述。您儘可能以最佳方式顯示查詢,但仍然不清楚...

相關問題