php - 如果按 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
任何想法都会是好人。先感谢您。
解决方案
您对之后进行哪种排序的描述并没有真正意义,而且这个问题也更像是一个 SQL 问题而不是 PHP 问题,但是我认为这个问题可能有用:
推荐阅读
- javascript - 如何在获取呼叫时禁用缓存?
- excel - 为每个带有 activecell 的工作表选择行
- .htaccess - 重定向时缺少基本 url 和路径之间的斜线
- javascript - PNPM - 开始新项目未按预期工作
- botframework - 我们如何设置机器人语言环境,以便机器人可以根据其语言环境提示用户
- download - Resharp 下载文件异步
- c++ - 运动捕捉数据的 3D 插值方法
- spring - 带有 Spring 框架的 PostgreSQL work_mem
- java - 如何区分属性文件中的属性
- java - 是否可以通过 Stripe 仅通过一个用户 3d 验证来确认多个 PaymentIntent?