2011-10-11 101 views
0

我有幾個使用SELECT CASE語法的視圖。但是當我創建一個備份腳本並嘗試恢復時,我得到語法錯誤。但請記住,視圖已成功創建第一個地方。MYSQL「SELECT CASE」查看語法錯誤

在我的幾個「SELECT CASE」語法觀就在這裏

DROP VIEW IF EXISTS `v_stockmovement` ; 
CREATE VIEW `v_stockmovement` 
AS 
SELECT stock_mov.id AS ID, 
stock_category.stock_category_code AS categorycode, 
stock_mov_type, 
(SELECT CASE stock_mov_type 
WHEN 1 THEN 'Stock Issue' 
WHEN 2 THEN 'Stock Reorder' 
WHEN 3 THEN 'Stock Adjustment' 
ELSE '' END) AS stock_mov_typedesc, 
(SELECT stock_mov_unitcost * stock_mov_quantity) AS cost, 
stock_mov_comments 
FROM stock_mov 
INNER JOIN stock ON stock.stock_code = stock_mov.stock_mov_linkstockcode 
INNER JOIN stock_category ON stock_category.stock_category_code = stock.stock_linkcategory 
; 

什麼可能我會丟失?

+3

'(選擇案例stock_mov_type ... ELSE '' END)AS stock_mov_typedesc'應該只是'CASE stock_mov_type ... ELSE''END AS stock_mov_typedesc'和'(SELECT stock_mov_unitcost * stock_mov_quantity)AS cost'應該是'stock_mov_unitcost * stock_mov_quantity AS cost'。你遇到了什麼錯誤? –

+0

@MartinSmith你應該寫這個答案而不是評論。 – Romain

+0

@Romain - 我沒有解釋爲什麼OP說它以前的工作。 –

回答

3

試試這個:(我已經刪除周圍的CASE語句的支架和SELECT)

DROP VIEW IF EXISTS `v_stockmovement` ; 
CREATE VIEW `v_stockmovement` 
AS 
SELECT stock_mov.id AS ID, 
stock_category.stock_category_code AS categorycode, 
stock_mov_type, 
CASE stock_mov_type 
    WHEN 1 THEN 'Stock Issue' 
    WHEN 2 THEN 'Stock Reorder' 
    WHEN 3 THEN 'Stock Adjustment' 
    ELSE '' 
END stock_mov_typedesc, 
stock_mov_unitcost * stock_mov_quantity AS cost, 
stock_mov_comments 
FROM stock_mov 
INNER JOIN stock ON stock.stock_code = stock_mov.stock_mov_linkstockcode 
INNER JOIN stock_category ON stock_category.stock_category_code = stock.stock_linkcategory 
; 
+0

那麼'SELECT'中的SELECT stock_mov_unitcost * stock_mov_quantity'實際上做了什麼?這是一種奇怪的方式來放置東西......(我知道它在OP中,但我懷疑這是造成麻煩的原因) – Romain

+0

@Romain同意。我在發佈後纔看到它,並且已經編輯了答案。 –

+0

像魅力一樣工作。謝謝! – davykiash