1

我有非常基本的 PHP 知识,并且已经得到了这个系统的修改。

有一张桌子上有潜在客户,销售人员可以打电话。目前它从表的开头开始,并像在 Mysql 中一样正常工作。

我希望它先调用所有新记录,然后再遍历旧记录。

我曾尝试使用 ORDER BY lead_id DESC 但这似乎不起作用,还有 lead_callcount ASC 但同样不起作用。

我一直在研究 CASE 选项,但对自己的使用了解不足。

该代码目前

public static function getNextLead(){

    $lead_res = Database::get()->data->query("SELECT `lead_id` FROM `" . DATABASE_TBL_LEADS . "` WHERE (`lead_disposition` IS NULL OR `lead_disposition` = 1) AND (`lead_timeout` IS NULL OR `lead_timeout` < NOW()) AND (`lead_locked` = '0000-00-00 00:00:00' OR `lead_locked` IS NULL) AND `lead_active` = '1' LIMIT 1");
    $lead_num = $lead_res->numRows();

    if($lead_num == 1){

        $lead_get = $lead_res->fetchRow(MDB2_FETCHMODE_ASSOC);

        $lead_id = $lead_get['lead_id'];

下面还有更多代码,

预先感谢您的帮助。

4

1 回答 1

0

在不知道您正在使用的数据库表中的可用列的情况下;很难确定。我建议你:

  1. 如果您还没有表 SCHEMA,请获取它
  2. 查看是否有添加潜在客户日期的列
  3. 如果是这样; 按该列排序

由于我们有要查看的表模式: ORDER BY 可以按 ASC 或 DESC 对结果集进行排序;默认值为 ASC(从最低点开始并从那里向上)。

大概 ASC 订单应该适用于您的通话计数;但如果这是一个相关值,也许你可以添加lead_timeout - 自上次通话以来的那个时间可能吗?

如果是这样的话,这样的事情可能会有所帮助:

ORDER BY `lead_callcount` ASC,
         `lead_timeout` ASC

如果有更长的时间(而不是更短的超时时间)更好,您可以选择将 lead_timeout 更改为 DESC

我在我的本地数据库中创建了一个测试表,并尝试了您提供的查询,其中 ORDER BY 键控于lead_callcount,它似乎工作正常。

用于检查基本语法和查询结构等内容;添加了 ORDER BY 后,您的上述查询将如下所示:

SELECT lead_id, lead_callcount, lead_timeout FROM `leads` 
WHERE (`lead_disposition` IS NULL OR `lead_disposition` = 1) 
  AND (`lead_timeout` IS NULL OR `lead_timeout` < NOW()) 
  AND (`lead_locked` = '0000-00-00 00:00:00' OR `lead_locked` IS NULL) 
  AND `lead_active` = '1'
ORDER BY `lead_callcount` ASC
        #,`lead_timeout` ASC #optional sort by lead_timeout
于 2013-03-22T11:43:57.490 回答