Php 无法按案例获取订单以在Mysql中工作
我看到了另一个问题的答案,这就是我如何开始的,但我无法让我的代码工作。我认为这与价格>'0.00'有关,因为mysql一直给我这个错误Php 无法按案例获取订单以在Mysql中工作,php,mysql,Php,Mysql,我看到了另一个问题的答案,这就是我如何开始的,但我无法让我的代码工作。我认为这与价格>'0.00'有关,因为mysql一直给我这个错误 1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'ORDER BY Price=0、Price asc、Style asc、Manufacturer asc END WHEN Price跟踪我的评论的正确语法 不能将整个ORDERBY子句放入CASE语句中 每个案例只有一个结尾是案例陈述结尾允许的 相反,类似于以下的方法
1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'ORDER BY Price=0、Price asc、Style asc、Manufacturer asc END WHEN Price跟踪我的评论的正确语法 不能将整个ORDERBY子句放入CASE语句中 每个案例只有一个结尾是案例陈述结尾允许的 相反,类似于以下的方法应该可以工作:
SELECT DivisionOf, Manufacturer, Style, Include,Fiber, Width, Backing
FROM CarpetInfo
WHERE (DivisionOf='Mohawk') AND (Manufacturer IN ('Aladdin'))
ORDER BY
/*sort field 1*/
CASE
WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes')
THEN Price
WHEN ((Price <= '0.00') OR (Price > '49.95') OR (ShowPrice!='Yes'))
THEN Style
END asc,
/*sort field 2*/
CASE
WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes')
THEN Style
WHEN ((Price <= '0.00') OR (Price > '49.95') OR (ShowPrice!='Yes'))
THEN Manufacturer
END asc,
/*sort field 3*/
CASE
WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes')
THEN Manufacturer
END asc;
更新:因为我们混合了字段类型,所以在某些情况下,您将使用字典排序而不是数字排序。一些关于案例陈述的吹毛求疵应该会有所帮助:
SELECT DivisionOf, Manufacturer, Style, Include,Fiber, Width, Backing
FROM CarpetInfo
WHERE (DivisionOf='Mohawk') AND (Manufacturer IN ('Aladdin'))
ORDER BY
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Price ELSE 0 END asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN NULL ELSE Style END asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Style ELSE Manufacturer asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Manufacturer END asc;
所以现在第一个排序是price中的值或0,然后样式被移动到第二个排序顺序。你要想让它按你的意愿工作,就得胡闹 这是用SQL编译的吗?什么是语法错误@k1775告诉我什么是错误(如果有),但肯定是?或任何结果,但子句不适用?1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解使用near'ORDER BY Price=0、Price asc、Style asc、Manufacturer asc END的正确语法。当Price CASE语句的语法错误时,您在一个CASE语句中有两个END,并且无论如何都不能在CASE语句中包装ORDER BY子句。
SELECT DivisionOf, Manufacturer, Style, Include,Fiber, Width, Backing
FROM CarpetInfo
WHERE (DivisionOf='Mohawk') AND (Manufacturer IN ('Aladdin'))
ORDER BY
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Price ELSE Style END asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Style ELSE Manufacturer asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Manufacturer END asc;
SELECT DivisionOf, Manufacturer, Style, Include,Fiber, Width, Backing
FROM CarpetInfo
WHERE (DivisionOf='Mohawk') AND (Manufacturer IN ('Aladdin'))
ORDER BY
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Price ELSE 0 END asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN NULL ELSE Style END asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Style ELSE Manufacturer asc,
CASE WHEN (Price > '0.00') AND (Price <= '49.95') AND (ShowPrice='Yes') THEN Manufacturer END asc;