2013-11-28 26 views
0

我有一個零售場景的小型數據庫,在這裏我有一個名爲「Dispatched」的字段,它是一個布爾值,用於指示該物品是否已分派。這當然是爲1和0的,我已經嘗試一個簡單的例子時做出1所顯示的是0號作爲SQL CASE WHEN問題,查詢根本沒有運行

我的全查詢:

SELECT 
orders.OrdersID, 
stock.ItemName, 
basket.Quantity, 
customer.FirstName, 
customer.LastName, 
address.AddressLine1, 
address.AddressLine2, 
address.TownOrCity, 
address.Postcode, 
address.Country, 
CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS basket.Dispatched 
FROM orders 
JOIN OrdersBasketJoin ON orders.OrdersID = OrdersBasketJoin.OrdersID 
LEFT JOIN basket ON OrdersBasketJoin.BasketID = basket.BasketID 
JOIN customer ON orders.CustomerID = customer.CustomerID 
JOIN address ON orders.DeliveryAddress = address.AddressID 
JOIN stock ON basket.StockID = stock.StockID 
ORDER BY `customer`.`CustomerID` ASC 
LIMIT 0 , 30 

的查詢工作正常無CASE WHEN,並且將在正常選擇Dispatched時顯示1和0,以及在引用Dispatched時正常工作。

然而,當我嘗試添加

CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS basket.Dispatched 

我得到的錯誤

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.Dispatched FROM orders JOIN OrdersBasketJoin ON orders.OrdersID = Ord' at line 12 

從我研究過,這是非常簡單的情況時,你可以做,而且語法我相信是正確的。

不確定它是否只是一個視覺錯誤,但CASE中的「END」不會像已知的函數一樣點亮,而JOIN,ON,LEFT等全部點亮,無論END在哪裏「T。

任何及所有的幫助深表感謝-Tom

回答

2

你缺少,address.Country因此您收到語法錯誤試試這個

SELECT 
orders.OrdersID, 
stock.ItemName, 
basket.Quantity, 
customer.FirstName, 
customer.LastName, 
address.AddressLine1, 
address.AddressLine2, 
address.TownOrCity, 
address.Postcode, 
address.Country, 
(CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END) AS `basket.Dispatched` 
FROM orders 
JOIN OrdersBasketJoin ON orders.OrdersID = OrdersBasketJoin.OrdersID 
LEFT JOIN basket ON OrdersBasketJoin.BasketID = basket.BasketID 
JOIN customer ON orders.CustomerID = customer.CustomerID 
JOIN address ON orders.DeliveryAddress = address.AddressID 
JOIN stock ON basket.StockID = stock.StockID 
ORDER BY `customer`.`CustomerID` ASC 
LIMIT 0 , 30 
+0

我最初有一個逗號,並且出現錯誤:#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在FROM之前的'.Dispatched FROM orders JOIN OrdersBasketJoin ON orders.OrdersID = Ord'12行 – Vereonix

+0

處使用正確的語法,您不需要逗號,需要用逗號分隔選擇列表中的列所以'as basket.Dispatched'是另一個新的列,所以你需要逗號前,然後使用從 –

+0

@Tom再次看到我的答案我已經使用反引號'也圍繞basket.Dispatched –

1

戴上反引號:

AS `basket.Dispatched` 
0
CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS 'basket.Dispatched' 

您以前缺少單引號和a刪除別名。

我已經在我的DEV機器上試過這個,沒有單引號,並且有相同的錯誤。

Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near '.'.