(SQL-запрос, электронная почта) Требуется запрос для поиска «элементов потока» на основе поля в той же таблице - PullRequest
0 голосов
/ 17 сентября 2009

Я пытаюсь выполнить несколько сложный SQL-запрос, и у меня немного времени, чтобы сосредоточиться на том, что мне нужно сделать. Кажется, я не могу найти JOIN, который подойдет для моей ситуации.

По сути, моя проблема в том, что у меня есть таблица объектов EMAIL с различными заголовками, и я пытаюсь реализовать THREADING. По моей оценке, мне нужно сделать следующее:

1) Выберите все элементы, которые не имеют значения «IN-REF-TO», так как они, вероятно, являются источниками потоков

2) Выбрать все элементы (из той же таблицы), которые имеют любое из ранее найденных "REF-NUM" в своих полях "IN-REF-TO"

3) упорядочить по дате ... Я думаю, что справлюсь с этой частью = P

Я бы хотел, чтобы все данные возвращались в одном наборе записей, но я полностью открыт для предложений. Можете ли вы цикл с SQL? Если кто-то считает, что это не тот путь, то, во что бы то ни стало, пожалуйста, предложите какой-то другой механизм. Кстати, я не проектировал базу данных, и есть очень мало шансов, что структура изменится в ближайшие 6 месяцев или около того.

1 Ответ

0 голосов
/ 18 сентября 2009

Нечто подобное может работать для вас:

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

Сначала будет отображаться самая новая тема (при условии, что REF-NUM создаются в порядке возрастания), затем ответы в порядке возрастания, а затем следующая тема и т. Д.

Предполагается, что в IN-REF-TO есть значение NULL, когда оно является инициатором темы. если это не так, порядок нужно будет изменить. Я могу сделать это, когда вы публикуете более подробную информацию.

Edit:

Хорошо, попробуйте что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...