(SQL查询,电子邮件)需要查询才能根据同一个表中的字段查找“线程项”

时间:2009-09-17 19:21:13

标签: sql

我正在寻找一个有点复杂的SQL查询,我有点时间围绕着我需要做的事情。我似乎无法找出适用于我的情况的JOIN。

基本上,我的问题是我有一个EMAIL对象表,其中分隔出各种标题,我正在尝试实现THREADING。据我估计,我需要做以下事情:

1)选择所有没有“IN-REF-TO”值的项目 - 因为这些可能是线程启动器

2)选择在“IN-REF-TO”字段中包含任何先前找到的“REF-NUM”的所有项目(来自同一个表格)

3)按日期排序......我想我可以处理这部分= P

我想在一个记录集中返回所有数据,但我完全愿意接受建议。你能用SQL循环吗?如果有人认为这不是解决问题的方法那么,请务必提出其他一些机制。为了记录,我没有设计数据库,在接下来的6个月左右,结构的变化几乎没有。

1 个答案:

答案 0 :(得分:0)

这样的事可能适合你:

select *
from Email 
order by coalesce(IN-REF-TO, REF-NUM) desc, CREATE-DATE

它将首先列出最新的主题(假设REF-NUM按升序创建),然后按升序排列,然后是下一个主题等。

假设在主题启动器中IN-REF-TO中存在NULL值。如果不是这种情况,则需要修改订单。当你发布更多细节时,我可以这样做。

修改

好的,尝试这样的事情:

select e1.*
from Email e1
left outer join Email e2 on e1.IN-REF-TO like '%' + e2.REF-NUM + '%'
order by coalesce(e2.REF-NUM, e1.REF-NUM), CREATE-DATE