2013-05-02 82 views
0

圖:操作數據中加入

Diagram of 4 tables combined

查詢的捧場:

SELECT DISTINCT c.CustomerID, c.FirstName , sh.DueDate, p.ProductID,p.ListPrice 
FROM SalesLT.Customer c 
    INNER JOIN SalesLT.SalesOrderHeader sh 
    ON c.CustomerID = sh.CustomerID 
    INNER JOIN SalesLT.SalesOrderDetail sd 
    ON sh.SalesOrderID = sd.SalesOrderID 
    INNER JOIN SalesLT.Product p 
    ON sd.ProductID = p.ProductID 
Order BY ListPrice Desc 

輸出:

Output

所需的結果:

enter image description here

對於所需的輸出:

  1. 可能是什麼就添加到現有的查詢?
  2. 做這個查詢的最佳方式是什麼?
  3. Sub查詢和連接的時間和空間複雜度是多少?
+1

你是否使用聚合函數的子句?如果沒有,你可能想查看它[這裏](http://msdn.microsoft.com/en-us/library/ms189461.aspx) – 2013-05-02 11:09:32

+1

你能解釋爲什麼產品ID在理想的結果表中有這些值嗎?即爲什麼794,795,793和956? – Serg 2013-05-02 13:30:28

+0

@Serg感謝您指出。現在編輯! – vCillusion 2013-05-02 19:21:09

回答

1

我想你想:

SELECT c.CustomerID 
    , c.FirstName 
    , sh.DueDate 
    , MAX(p.ProductID) ProductID 
    ,p.ListPrice 
    FROM SalesLT.Customer c 
     INNER JOIN SalesLT.SalesOrderHeader sh 
     ON c.CustomerID = sh.CustomerID 
     INNER JOIN SalesLT.SalesOrderDetail sd 
     ON sh.SalesOrderID = sd.SalesOrderID 
     INNER JOIN SalesLT.Product p 
     ON sd.ProductID = p.ProductID 
    GROUP BY 
    , c.FirstName 
    , sh.DueDate 
    , p.ListPrice 

Order BY ListPrice Desc 

不,它使多大意義的查詢,但我猜你想知道的方法呢?大概你現在有一個很好的答案,但它鼓勵我們把時間放在一個答案,如果你勾選一個適當的迴應,謝謝