SQL - 如何使用正常顺序的关键字过滤结果并将它们放在底部?

时间:2013-04-01 21:31:37

标签: php sql ms-access odbc

我有一个用PHP重建的网站,可以从Access数据库中读取。我有大部分功能可以根据选择下拉列表中的类别来显示产品列表。但是,我想做的一件事是将所有过时的产品移到结果列表的底部。目前,它们在显示的结果中混合。

是否有允许我这样做的SQL语句?目前,数据库中的所有过时产品都在其产品名称的末尾附加了“(已过时)”。我希望我可以将字符串(Obsolete)作为目标。

这是我当前的SQL语句:

$handle = odbc_connect("Potter","","");
$results = odbc_exec($handle, "SELECT DISTINCT product.prodimage, 
                product.prodmodelno, 
                product.proddesc, 
                product.prodorder, 
                product.prodpdf, 
                product.prodmanual, 
                product.prodtip 
FROM   product 
WHERE  (( ( product.prodmodelno ) LIKE '%$searchTerm%' )) 
        OR (( ( product.proddesc ) LIKE '%$searchTerm%' )) 
ORDER  BY product.prodorder DESC, 
          product.prodmodelno ASC ");

1 个答案:

答案 0 :(得分:2)

您需要ORDER使用IIF语句(类似于ANSI SQL中的CASE

http://www.techonthenet.com/access/functions/advanced/iif.php

所以你可以按(未经测试)排序:

IIF (RIGHT(product.[proddesc],10) = "(Obsolete)", "b", "a")

这会创建一个新的派生列,过时时为“b”,否则为“a”....