1
SELECT id, case_id
FROM `case_note`
WHERE `type` = 'follow-up-open'
AND `follow_up_status` =1
GROUP BY `case_id`
ORDER BY case_id DESC

最近、このクエリを使用して一意の結果を取得しました。次の結果が得られましたid, case_id

id    case_id
141   23
84    16
47    14
36    1

このクエリは、エージェントによって作成されたフォローアップを表示します。これは、フォローアップが作成されたことをfollow_up_status=1意味し、フォローアップがクローズされたことを意味するすべてのフォローアップを表示しfollow_up_status=2ます。

さて、問題は について話しましょうcase_id=23。このケースはid=145. 今、私はこのケースを表示したくありません。しかし、将来、これでケースが開かれた場合、case_id再びフォローアップ リストに表示されます。

新しいケースが開いているとしましょうid=149。このケースをもう一度表示したいと思います。このアプローチの処理方法がわかりません。手がかりを教えてください。

更新:サンプルデータは次のとおりです。 サンプルデータ

更新:私の問題は解決しましたが、この質問を閉じる方法がわかりません。ここで更新しました。単一のクエリで問題を解決しようとしましたが、クエリを 2 つのクエリに分割して問題を解決しました。

4

3 に答える 3

0

case_id 23 が ID 149 によって再開された場合、UPDATE を使用してフォローアップ ステータスを変更できます。

UPDATE case_note
SET id=149, follow_up_status=2
WHERE case_id=23 

または、id 141 によって閉じられた case_id 23 に関する情報を保持し、新しいケースのステータスを記録する場合は、新しい行を追加するだけです。

id    case_id    follow_up_status
149   23         1

この行は、現在のクエリによって選択されます。

于 2013-01-10T05:40:53.003 に答える
0

腰からですが、自分でテストするために SQL テーブルを再作成しようとします...

SELECT `id`, `case_id`
FROM `case_note`
WHERE `type` = 'follow-up-open'
GROUP BY `case_id`
HAVING SUM( `follow_up_status` ) = 1
ORDER BY `case_id` DESC
于 2013-01-10T05:27:50.177 に答える
0

私は自分がしたのと同じ状況を経験しましたが、

ログテーブルを保持できます。テーブル名が大文字であると仮定しましょう。case_log というテーブルを作成します。

ケースを再度オープンする場合は、既存のレコードをログ テーブルに移動します。既存の行を新しいデータで更新します。

最終的には、ログ テーブルに古いレコードがあり、必要なケースの進行状況を追跡できる新しいレコードが現在のテーブルにあります。case_id を使用すると、ケースで何が起こったかを追跡できます。

過去のデータを追跡したくない場合は、テーブルを更新してください。この手順に従っているので、すべてのデータが必要になることを願っています。

問題がある場合はお知らせください。

于 2013-01-10T05:30:34.167 に答える