Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(SQL查询,电子邮件)需要根据同一表中的字段进行查询以查找“线程项”_Sql - Fatal编程技术网

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

(SQL查询,电子邮件)需要根据同一表中的字段进行查询以查找“线程项”,sql,Sql,我希望执行一个有点复杂的SQL查询,我需要花点时间来思考我需要做什么。我似乎想不出一个适合我的加入方式 基本上,我的问题是,我有一个电子邮件对象表,其中有不同的标题,我正在尝试实现线程。据我估计,我需要做以下工作: 1选择所有没有IN-REF-TO值的项目-因为它们可能是线程启动器 2从同一表格中选择所有项目,这些项目在其IN-REF-TO字段中包含以前找到的任何REF NUM 3按日期订购。。。我想我能处理这部分 我希望在一个记录集中返回所有数据,但我完全愿意接受建议。你能用SQL循环吗?如果

我希望执行一个有点复杂的SQL查询,我需要花点时间来思考我需要做什么。我似乎想不出一个适合我的加入方式

基本上,我的问题是,我有一个电子邮件对象表,其中有不同的标题,我正在尝试实现线程。据我估计,我需要做以下工作:

1选择所有没有IN-REF-TO值的项目-因为它们可能是线程启动器

2从同一表格中选择所有项目,这些项目在其IN-REF-TO字段中包含以前找到的任何REF NUM

3按日期订购。。。我想我能处理这部分


我希望在一个记录集中返回所有数据,但我完全愿意接受建议。你能用SQL循环吗?如果有人认为这不是解决问题的方法,那么,请尽一切努力,提出一些其他机制。作为记录,我没有设计数据库,在未来6个月左右的时间内,结构改变的可能性很小。

类似的内容可能适合您:

select *
from Email 
order by coalesce(IN-REF-TO, REF-NUM) desc, CREATE-DATE
它将首先列出最新的主题(假设REF NUMs是按升序创建的),然后按升序列出回复,然后列出下一个主题,以此类推

当in-REF-TO是主题启动程序时,它假定in-REF-TO中存在空值。如果情况并非如此,则需要修改order by。我可以这样做,当你张贴更多的细节

编辑:

好的,试试这样:

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

请发布数据库结构、示例数据以及SQL/Oracle/MySQL是什么类型的数据库?很高兴接受您前面问题的一些答案。是的,我需要返回并回顾其中的一些问题。然而,很多人从未收到过高质量的答案。谢谢你的帖子。IN-REF-TO的一点是,它随着每个回复而增长。它实际上是一个字符串,而不是一个数字。所以我需要找到LIKE REF-NUM来查看字符串是否包含REF-NUM。