2011-10-11 99 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