我面临一个 mySQL 问题:我有一个包含这些列的 mySQL 表,它存储每个订单和订单的每个状态:
    id_order_history / id_employee / id_order / id_order_state / date_add 
我想得到一个 *id_order* 的列表,它们在特定的 *id_order_state* 中 - 比如说 10 - 但我不想获得在这个特定状态之后状态发生变化的订单,也不想收集不到 7 天的订单...
以下是我如何做到这一点:
首先查询以获取订单和日期列表:
SELECT id_order, date
           FROM '._DB_PREFIX_.'ps_order_history, 
           WHERE TO_DAYS(NOW()) - TO_DAYS(date_add) <= 7 
           AND id_order_state = 10
然后一个循环只获取没有最新状态的订单:
$query = '   SELECT id_order, date
           FROM '._DB_PREFIX_.'ps_order_history, 
           WHERE ';
foreach ( $listAbove, $item) {
     $query =+ '
                (( date > $item['date'])
                AND ( id_order = $item['id']))
             ';
 }
 $orderlist = Db::getInstance()->ExecuteS($query);
这并不是真正的优化,我很确定我可以只用一个查询来做到这一点,但我真的不知道怎么做。
你知道如何使这个更清洁吗?