2010-09-01 48 views
0

我有一個表S包含供應商(S,SNAME,城市),一個表P包含產品(P,PNAME,顏色,重量,價格)和一個表SP包含交貨(S,P,QTY)其中S和P外鍵的表S和P.顯示交付最大交貨(嵌套查詢)的供應商名稱?

我被要求做的是

「顯示誰已經交付的最大輸送(如嵌套查詢)的供應商(S)的名稱。 「

我該如何去做這件事?

編輯:刪除了我聲稱的代碼段工作正常。不是。

+0

這功課嗎?你使用什麼樣的數據庫?如果你沒有檢查你的外鍵列's',每個'SP'加入每個'S',你的當前查詢如何工作? – 2010-09-01 08:11:18

回答

0
select s.sname, sum(sp.qty) 
    from s, 
     sp, 
     (select max(qty) val 
      from (select sum(sp.qty) qty 
        from s, sp, p 
       where sp.p = p.p 
        and sp.s = s.s 
       group y s.sname)) max_q 
where sp.s = s.s 
group by s.sname 
having sum(sp.qty) = max_q.val 
0

我找到了解決方案。我猜想太明顯了。我很難弄清楚使用什麼內部查詢。

SELECT SNAME FROM S, SP WHERE S.S = SP.S AND QTY = (SELECT MAX(QTY) FROM SP) 
+0

不是。您選擇單一產品的最大交貨金額,但您必須考慮您的供應商可以交付多種產品,在這種情況下,您必須彙總交貨金額。 – 2010-09-01 09:00:35

+0

SP中的行都是單次交付,我認爲他們詢問了最大的單次交付。如果沒有,你是正確的:) – Challe 2010-09-01 09:27:09