PHP Mysql 按条件排序

标签 php mysql sql-order-by

我想安排我的事件配置良好,我面临的是,

如果我的事件开放出售,我会先展示它们,然后我展示开放预订且无法出售的事件,但是当人们预订时,我会为他们开放我的事件 3 -4 天,只有预订的人才能购买该事件,

我想要的很简单,我想向事件表明他们已经预订了,并且该事件只对预订的人开放销售;首先是顺序,然后是对所有人开放的,然后是不能购买的,因为它们只接受预订

例如,A是向所有人开放的事件,B是开放预约的事件,C是只有预约的人才能购买的事件,

我的查询返回的是:A - B - C

我想要的是:C - A - B

我尝试更改查询,但我知道我犯了一个错误

这是我的代码:

try
{
$event_query = "SELECT * FROM `events` ORDER BY `reservation` ASC, `eventdate` ASC";
$event_query_check = $db->prepare($event_query);
$event_query_check->execute();
$ac = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
while($fetch = $event_query_check->fetch (PDO::FETCH_ASSOC) ){ 

// fetching the info exc in here


try {
$q = "SELECT * FROM `event_reservation` WHERE `attendee_id` = :attendee_id AND `event_id` = :event_id";
$check_query = $db->prepare($q);
$check_query->bindParam(':attendee_id', $userid, PDO::PARAM_INT);
$check_query->bindParam(':event_id', $event_id, PDO::PARAM_INT);
$check_query->execute();
$n2 = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
}
catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}

// not working part of the code

 if($n2){
$event_query = "SELECT * FROM `members` ORDER BY `reservation_open_to_sell` DESC, `reservation` ASC, `eventdate` ASC";
}

// ends here

} // end of while
} // end of try
catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}

谢谢

最佳答案

你可以这样做:

order by case when reservation='c' then 1 
              when reservation='a' then 2
              when reservation='b' then 3 end

关于PHP Mysql 按条件排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316326/

相关文章:

php - 如何在 PHPUnit 中执行所有测试?

mysql - 带子查询的 ON DUPLICATE KEY UPDATE 查询

MYSQL 按不为空的字段分组

php - 我如何通过php从mysql数据库中获取图像

php - 清理 jsonp 回调的最佳方法?

php - 如何将 MarkerClusterer 添加到我的谷歌地图

php - 通过 PHP 以最快的速度将数据从 MSSQL 传输到 MySQL

php - 使用 CodeIgniter 和 MySQL 按列名排序

sql - 错误: missing FROM-clause entry for table "p"

mysql - 首先按特定字段值 LIKE 排序