2015-09-26 50 views
0

我對SQL很陌生,我正在查詢我輸入的數據,以查找Danmurphys出售的少於20美元的葡萄酒。我編寫的查詢是在底部,但語法不正確,我不知道我在做什麼錯。SQL聯繫查詢

任何幫助你可以提供給我的將非常感謝!


CREATE TABLE Retailer 
(RETAIL_ID NVARCHAR(4) NOT NULL, 
RETAIL_NAME NVARCHAR(30) NOT NULL, 
PRIMARY KEY (RETAIL_ID)); 

CREATE TABLE Wine 
(WINE_ID NVARCHAR(3) NOT NULL, 
WINE_NAME NVARCHAR(30) NOT NULL, 
WINE_VINT NVARCHAR(4) NOT NULL, 
PRIMARY KEY(WINE_ID)); 

CREATE TABLE Dist 
(RETAIL_ID NVARCHAR(4) NOT NULL, 
WINE_ID NVARCHAR(3) NOT NULL, 
WINE_PRICE DECIMAL(6,2) NOT NULL, 
CONSTRAINT PK_Dist PRIMARY KEY 
    (
     RETAIL_ID, 
     WINE_ID 
    ), 
    FOREIGN KEY (RETAIL_ID) REFERENCES Retailer (RETAIL_ID), 
    FOREIGN KEY (WINE_ID) REFERENCES Wine (WINE_ID)); 

INSERT INTO Wine VALUES('101','Grange','2010'); 
INSERT INTO Wine VALUES('102','Grange','2006'); 
INSERT INTO Wine VALUES('103','Reserve Shiraz','2013'); 
INSERT INTO Wine VALUES('104','Grey Label Shiraz','2012'); 
INSERT INTO Wine VALUES('105','Patricia Shiraz','2009'); 
INSERT INTO Wine VALUES('106','Ten Acres Shiraz','2012'); 
INSERT INTO Wine VALUES('107','Double Barrel Shiraz','2012'); 
INSERT INTO Wine VALUES('108','Platinum Label Shiraz','2006'); 

INSERT INTO Retailer VALUES('1001', 'Dan Murphys'); 
INSERT INTO Retailer VALUES('1002', 'Woolworths'); 

INSERT INTO Dist VALUES('1001','101','750'); 
INSERT INTO Dist VALUES('1001','102','700'); 
INSERT INTO Dist VALUES('1001','103','10'); 
INSERT INTO Dist VALUES('1001','104','35'); 
INSERT INTO Dist VALUES('1001','105','50'); 
INSERT INTO Dist VALUES('1001','106','25'); 
INSERT INTO Dist VALUES('1001','107','15'); 
INSERT INTO Dist VALUES('1001','108','170'); 
INSERT INTO Dist VALUES('1002','103','9'); 
INSERT INTO Dist VALUES('1002','104','33'); 
INSERT INTO Dist VALUES('1002','105','44'); 

SELECT DISTINCT Wine.WINE_NAME, Wine.WINE_VINT, Dist.WINE_PRICE 
FROM Wine 
WHERE WINE_PRICE < 20 
INNER JOIN Dist ON Wine.WINE_ID = Dist.RETAIL_ID 
INNER JOIN Wine on Dist.RETAIL_ID = Retailer.RETAIL_ID 
WHERE retailer.RETAIL_NAME = 'danmurphys' 

回答

0

你是幾乎沒有。在字符串比較期間,它需要與我們在數據庫中的內容匹配。您可以用以下方式編寫查詢:

SELECT Wine.WINE_NAME, Wine.WINE_VINT, Dist.WINE_PRICE 
FROM Wine 
INNER JOIN Dist ON (Wine.WINE_ID = Dist.WINE_ID) 
INNER JOIN Retailer on (Dist.RETAIL_ID = Retailer.RETAIL_ID) 
WHERE Retailer.RETAIL_NAME = 'Dan Murphys' AND WINE_PRICE < 20 
+0

謝謝詹姆斯,這真棒隊友! –

+0

@MichaelHiggon,我的榮幸! –