2014-04-04 122 views
-2

我試圖從最大價格的產品的表「供應商」和「產品」返回供應商名稱和產品名稱。到目前爲止,這就是我所擁有的。我知道我做錯了什麼,但我不確定我的查詢的兩個部分分開工作。嵌套的SQL查詢與多個表

SELECT suppliers.SUPPLIERNAME, products.PRODUCTNAME, products.PRICE 
FROM PRODUCTS, SUPPLIERS 
WHERE SUPPLIERS.SUPPLIERID=PRODUCTS.PRODUCTID 
AND procuct.price=(SELECT MAX(Price) 
from products); 

回答

0

我有幾條評論和一個可能的解決方案。

1)您有拼寫錯誤。你拼錯了你的表名。

2)這不是你該如何加入2個表

3)你與你的供應商的ID加入您的產品ID。這是不對的。你的PROUCTS表應該有一些SUPPLIER_ID或其他東西。或者一些第三張桌子加入這些2或類似的東西。

/* 
DECLARE @PRODUCTS TABLE (PRODUCTNAME varchar(10), PRICE int, PRODUCTID INT); 
INSERT INTO @PRODUCTS VALUES 
('Shoes', 10, 1), 
('Pants', 123, 2), 
('Socks', 30, 3); 

DECLARE @SUPPLIERS TABLE (SUPPLIERNAME varchar(10), SUPPLIERID INT); 
INSERT INTO @SUPPLIERS VALUES 
('Adidas', 1), 
('Nike', 2); 
*/ 

SELECT s.SUPPLIERNAME, p.PRODUCTNAME, p.PRICE 
FROM @PRODUCTS p 
    JOIN @SUPPLIERS s ON s.SUPPLIERID = p.PRODUCTID 
WHERE p.price=(SELECT MAX(Price) from @PRODUCTS); 

在表名的前面刪除@讓它爲你工作。 請記住,這仍然可能是錯誤的,因爲您可能不應該JOIN您的表格基於PRODUCTID = SUPPLIERID