Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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
Php 无法按案例获取订单以在Mysql中工作_Php_Mysql - Fatal编程技术网

Php 无法按案例获取订单以在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语句中 每个案例只有一个结尾是案例陈述结尾允许的 相反,类似于以下的方法

我看到了另一个问题的答案,这就是我如何开始的,但我无法让我的代码工作。我认为这与价格>'0.00'有关,因为mysql一直给我这个错误


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;