Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL案例出现问题时,查询根本不运行_Mysql_Sql_Case_Case When - Fatal编程技术网

Mysql SQL案例出现问题时,查询根本不运行

Mysql SQL案例出现问题时,查询根本不运行,mysql,sql,case,case-when,Mysql,Sql,Case,Case When,我有一个零售场景的小型数据库,其中有一个名为Dispatched的字段,它是一个bool,用于指示商品是否已被配送。这当然是1和0,我尝试了一个简单的例子,将1显示为是,0显示为否 我的全部问题是: SELECT orders.OrdersID, stock.ItemName, basket.Quantity, customer.FirstName, customer.LastName, address.AddressLine1, address.AddressLine2, ad

我有一个零售场景的小型数据库,其中有一个名为Dispatched的字段,它是一个bool,用于指示商品是否已被配送。这当然是1和0,我尝试了一个简单的例子,将1显示为是,0显示为否

我的全部问题是:

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
查询工作正常,不带大小写WHEN,并将显示正常选择分派时的1和0,以及引用分派时工作正常的位置

然而,当我尝试添加

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
从我所研究的情况来看,这和你能做的一样简单,我相信语法是正确的

不确定这是否只是一个视觉缺陷,但案例中的END不会像已知的函数一样亮起,而JOIN、ON、LEFT等都会亮起,无论END在哪里都不会亮起

非常感谢您提供的任何帮助-Tom,地址后缺少您的姓名。因此您遇到语法错误,请尝试此项

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
地址后缺少,因此出现语法错误。请尝试此项

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
放回勾号:

AS `basket.Dispatched` 
放回勾号:

AS `basket.Dispatched` 
别名前后缺少单引号

我在我的开发机器上尝试过这个,但没有一个引用,并且出现了相同的错误

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
别名前后缺少单引号

我在我的开发机器上尝试过这个,但没有一个引用,并且出现了相同的错误

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

最初我在那里用了一个逗号,然后得到了一个错误:1064-您的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,以了解要使用的正确语法。从orders发送加入OrdersBasketJoin ON orders.OrdersID=Ord'在第12行之前,您不需要逗号,您需要逗号来分隔选择列表中的列,以便使用basket。Dispatched是另一个新列,因此您需要在该列之前使用逗号,然后使用from@Tom再次看到我的答案,我在篮子周围也用了反勾号,我是从另一个问题开始的:它没有显示出对篮子的需要,或者“我最初在那里用了一个逗号,得到了一个错误:1064-您的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,以了解要使用的正确语法。从orders发送加入OrdersBasketJoin ON orders.OrdersID=Ord'在第12行之前,您不需要逗号,您需要逗号来分隔选择列表中的列,以便使用basket。Dispatched是另一个新列,因此您需要在该列之前使用逗号,然后使用from@Tom再次看到我的答案,我在篮子周围也用了反勾号。DispatchedAh谢谢,我是从另一个问题开始的:在这里,它没有显示出对篮子或篮子的需要``