0

我很难确定我遇到的问题。首先,我有一个 IVR 表,它本质上是一个要呼叫的队列;它看起来像这样:

---------------------------------------------------------------------------------------------------------------------------------
| id | name | phone_number | has_called | type_of_call | date_called | other_meaningless_statuses |
---------------------------------------------------------------------------------------------------------------------------------

重要的一点是'has_call_status'。当该状态等于 0 时,这意味着一个人尚未被呼叫,并出现在呼叫队列中。

我的 IVR 可以拨打多种类型的电话,因此它会将人员添加到不同的列表中(请参阅 type_of_call)。我的问题是我使用以下查询按顺序添加这些列表:

SELECT DISTINCT ub.name, ub.phone_number FROM user_base ub
INNER JOIN ivr_queue ivr ON ub.usercode = ivr.usercode
WHERE ub.needs_call = 1
AND ub.published = 1 AND ub.ready_status = 0 #not important
AND
(
    ivr.has_called != 0
    OR
    ivr.has_called IS NULL
) #important bit!
#optional list-specific statuses go here

程序流程是:用has_call = 0删除ivr_queue中的所有人->为某个列表选择人->插入列表->对所有列表重复选择和插入

我遇到麻烦的地方是我在列表之间得到了重复的条目。列表偶尔会有重叠的标准,因此会有重复。为了避免这种情况,我在上述查询中添加了两个 ivr 条件,以过滤除第一个列表之外的所有重复项,第一个列表应该是创建的第一个列表。

我确定 ivr 条件包含在我的所有选择中,并且管理查询的 PHP 脚本执行一次选择,然后一次插入,然后冲洗和重复。我也确定给定列表中没有重复的条目。

对于问题的长度和复杂性,我深表歉意,如有必要,我将提供任何其他信息或澄清。

编辑:我得到的重复项如下所示:列表 1 有 10 个姓名 - 电话号码对,列表 2 有 30 个姓名 - 号码对,每个列表中的两个姓名 - 号码对是相同的,进一步调查确实是我的数据库中的相同条目。据推测,一旦将第一个列表插入数据库,这应该不是问题(考虑到 ivr 排除参数) 编辑:如有必要,我将在我的 PHP 中进行编辑,尽管它非常冗长,因为直到在我构建代码之后。

4

0 回答 0