2010-09-30 51 views
1

我遇到了作業問題。 具體而言,找出比所有筆記本電腦更快產生PC的製造商。 我使用的查詢是SQL子查詢幫助

SELECT DISTINCT maker 
From Product 
Where model = (SELECT model 
         FROM PC 
         WHERE speed > ALL (SELECT speed 
              FROM Laptop)); 

不過,我不斷收到一個錯誤說,我的子查詢返回不止一行。這是我的一個語法錯誤還是我的邏輯剛剛關閉?

+0

嗚呼!有人公開承認想要幫助一個作業問題! +1爲誠實。 – 2010-09-30 13:22:29

回答

1

你的邏輯似乎是關閉的。

使用子查詢此篩選子句:

Where model = (SELECT model FROM PC WHERE speed > ALL (SELECT speed FROM Laptop)); 

必須先爲它工作返回一行。

你可以嘗試:

Where model IN (SELECT model FROM PC WHERE speed > ALL (SELECT speed FROM Laptop)); 
+1

非常感謝。我完全忘記了比較運算符只能用於單個值。 DOH!感謝您的幫助,現在我要開始我的PERL作業了。 – Pinsickle 2010-09-30 00:59:11

0

Try--

​​
+0

感謝您的建議。然而,我要提到的是,我們不允許使用max,min,avg等來完成這個作業 – Pinsickle 2010-09-30 01:03:43

1

其實你也可以使用JOIN 使用連接取決於你打算做什麼。
比如我想找誰生產(S)的PC比所有的筆記本電腦速度更快的製造商和PC的型號:

SELECT product.maker , max(product.speed) 
From product join pc on product.model = pc.model 
Group by product.maker 
Having product.speed = max(product.speed) 

,我認爲它應該工作!