抱えている問題を特定するのに苦労しています。まず、IVR 用のテーブルがあります。これは、本質的に電話をかける人々のキューです。次のようになります。
---------------------------------------------------------------------------------------------------------------------------------
| id | name | phone_number | has_called | type_of_call | date_called | other_meaningless_statuses |
---------------------------------------------------------------------------------------------------------------------------------
そこで重要なのは「has_called_status」です。そのステータスがゼロの場合、その人はまだ呼び出されておらず、呼び出し待ちのキューに表示されていることを意味します。
私の 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_called = 0 の ivr_queue 内のすべての人を削除します -> 特定のリストに対して人を選択します -> リストを挿入します -> すべてのリストに対して選択と挿入を繰り返します
問題が発生しているのは、リスト間でエントリが重複していることです。リストの条件が重複する場合があるため、重複があります。これを回避するために、上記のクエリに 2 つの IVR 条件を追加して、最初に作成されたリストである必要がある最初のリスト以外のすべてで重複を除外しました。
すべての選択に IVR 条件が含まれていること、およびクエリを管理する PHP スクリプトが 1 つの選択、次に 1 つの挿入、すすぎ、繰り返しを実行していることは確かです。また、特定のリスト内に重複するエントリがないことも確信しています。
質問の長さと複雑さについてお詫び申し上げます。必要に応じて、追加情報や説明を提供します。
編集:私が取得している複製は次のようになります:リスト1には10の名前と電話番号のペアがあり、リスト2には30の名前と番号のペアがあり、各リストの名前と番号のペアのうち2つは同一であり、さらに調査すると実際に私のデータベースからの同じエントリ。おそらく、最初のリストがデータベースに挿入されると、これは問題にならないはずです (ivr 除外パラメーターを考えると)コードを作成した後。