2015-11-03 16 views
2

問題如下:如何在SQL中使用替代變量來提示用戶輸入客戶名稱?

確定特定客戶購買了哪本書。使用客戶名稱執行搜索,而不是客戶編號。使用替代變量並輸入Jack Lucas作爲客戶名稱。如果他購買了同一本書的多個副本,則不重複結果。


所以基本上我有4個表加入,包括Customers,Orders,Orderitems和Book。我想提示用戶輸入Jack Lucas。並顯示傑克盧卡斯購買的書名的結果。

SELECT b.title 
FROM customers c 
JOIN orders o 
ON c.customerid = o.customerid 
JOIN orderitems oi 
ON o.orderno = oi.orderno 
JOIN books b 
ON oi.isbn = b.isbn 
WHERE c.firstname = &firstname 
AND c.firstname = 'JAKE'; 

我試圖運行上面的代碼,但在我的 '傑克' 鍵,它顯示了我這個錯誤,

ORA-00904: 「傑克」:無效的標識符 00904。 00000 - 「%s的:無效的標識符」 *原因:
*動作: 行錯誤:9欄:21

我不知道我做錯了。請指教。先謝謝你。

+0

你是什麼意思的「c.firstname =&firstname」。 SQL不接受這樣的參數。如果你想定義一個參數,像這樣:DECLARE @firstname varchar(20) – Adish

+0

看看這個[問題](http://stackoverflow.com/q/29546620/2451726) – Arulkumar

回答

2

'單引號圍繞&變量。

WHERE子句中用兩個條件而不是兩個條件檢查與AND相同的列名,請使用任意一個。所以下面的代碼將起作用。

SELECT b.title 
FROM customers c 
JOIN orders o ON c.customerid = o.customerid 
JOIN orderitems oi ON o.orderno = oi.orderno 
JOIN books b ON oi.isbn = b.isbn 
WHERE c.firstname = '&firstname'