2013-01-10 33 views
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那就是:在MySQL查询滞留

id case_id 
141 23 
84 16 
47 14 
36 1 

这个查询显示由代理创建的followups,这将显示所有后续有follow_up_status=1意味着后续创建,follow_up_status=2意味着后续关闭。

现在的问题是让我们来谈谈case_id=23。这个案件是关闭的id=145。现在我不想显示这个案例。但如果在将来如果一个案例将在此case_id上打开,那么它将再次显示在后续列表中。

比方说一个新的案例与id=149打开,那么我想再次显示这种情况。我无法弄清楚如何处理这种方法,请帮我指导一些线索。

UPDATE:这里是样本数据: Sample Data

UPDATE:我的问题解决,但不知道如何关闭这个问题,我只是在这里更新。我尝试在单个查询中解决我的问题,但我已将查询分成两个查询并解决了问题。

+0

究竟是什么问题?只要您的表格中有case_id = 23和follow-up-status = 1的新行,它将通过您的查询选择 – Roy

+0

提供样本数据和预期结果以获得更多结算... – hims056

+0

@Roy跟进状态= 2时的问题,正如'id = 145 case_id = 25'已经关闭了这种情况,我想如果案件id用'follow-up-status = 2'关闭,那么不想显示这种情况,这是我的一半查询,我需要指导来解决这个问题。 –

回答

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 
+0

可能不完美/工作 - 在这里使用非常小的数据示例... –

0

我已经经历了同样的情况我所做的就是走了,

你可以保留一个日志表。我们假设你的表名是大小写的。创建一个名为case_log的表。

当您想再次打开案例时,将现有记录移动到日志表中。并用新数据更新现有行。

最终,您将在日志表和新记录当前表中记录您的旧记录,您可以在其中跟踪任何所需情况的进度。通过使用case_id,您可以跟踪案件发生的情况。

如果您不想跟踪过去的数据,只需更新表格即可。我希望你能遵循这个程序,因此需要你所有的数据。

如果您有任何问题,请告诉我。

0

当CASE_ID 23由ID 149重新打开,你可以使用UPDATE改变它的后续状态:

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

或者,如果你想保持约CASE_ID 23的信息beeing一度ID关闭141并记录新的案例状态,只需添加一个新行:

id case_id follow_up_status 
149 23   1 

此行将由您当前的查询选中。