首页 > 解决方案 > 如果按 sql php 排序

问题描述

嘿伙计们,我不确定这是否可以做到。我有一张桌子,上面有这样的产品:在此处输入图像描述

每个产品都有一个类别,有些产品有一个次要类别。

在这种情况下,我希望能够使用“其他”类别上方的示例表来做空,Order2例如Οrder

Item2 将“其他”类别和订单号“2”作为主要类别

项目 1 和 5 具有“其他”类别作为 2ndcategory 与 order2 -number“3”和“1”

要显示我使用以下查询的项目:

$query= "SELECT * FROM products WHERE category = $cat_id or 2ndcategory = $cat_id  ORDER BY order ASC";

就像现在一样,我正在显示具有主类别或第二类别的项目,但显示顺序是项目 1、项目 2 和项目 5

我希望能够在项目 5 和 1 order2 的情况下以及在 item2 订单的情况下显示 item5、item2 和 item1。

我尝试了以下方法,但似乎不起作用。

$query3 = "SELECT * FROM products";
        $tests= $conn->query($query3);
        foreach($tests as $test){
            $test_cat = $test['2ndcategory'];
            $test_id = $test['order2'];
            $test_id_1 = $test['order1'];
            $test_code='';
                if($test_cat != NULL){
                    $test_code = $test_id;
                }else{$test_code = $test_id_1;
              }
            }
$query= "SELECT * FROM products WHERE category = $prod_id or 2ndcategory= $prod_id ORDER BY ".$test_code." ASC";

我也试过

  $query3 = "SELECT * FROM products";
            $tests= $conn->query($query3);
            foreach($tests as $test){
                $test_code= $test['order2'];
                }

    $query= "SELECT * FROM products WHERE category = $prod_id or 2ndcategory= $prod_id ORDER BY IF($test_code != NULL){order2}else{order} ASC";

   $query= "SELECT * FROM products WHERE category = $prod_id or 2ndcategory= $prod_id ORDER BY 
    CASE orderby 
    WHEN order2 != NULL THEN order2
    WHEN  order2 == NULL THEN  order END 
    ASC";

我也试过

ORDER BY        
CASE orderby        
WHEN order2 is not NULL THEN order2
ELSE  order END ASC";

ORDER BY 
CASE orderby WHEN order2 is not NULL THEN order2
CASE WHEN order2 is NULL THEN order
ELSE order END 
ASC

任何想法都会是好人。先感谢您。

标签: phpsql

解决方案


您对之后进行哪种排序的描述并没有真正意义,而且这个问题也更像是一个 SQL 问题而不是 PHP 问题,但是我认为这个问题可能有用:

你可以在 ORDER BY 中添加 if 语句吗?


推荐阅读