|
Составление запроса.
|
|||
---|---|---|---|
#18+
Здравствуйте, уважаемые знатоки. Есть таблица со следующими полями: Name, Date_Created, Start, End. Таблица заполнена по следующим условиям: Если есть Date_Created, то заполняются поля Start и End(берутся временные промежутки, куда попадает Date_Created). Если Date_Created пуста, то Start и End заполняются MAX(Start) и MAX(End) ( т.е. текущим промежутком, берутся из отдельной таблицы). Задача следующая: Необходимо отобрать все записи, в которой будут ТОЛЬКО те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created НЕ пуста. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 11:17 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
pr0b3l1987Задача следующая: Необходимо отобрать все записи, в которой будут ТОЛЬКО те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created НЕ пуста. Ничего не понял в постановке задачи... Сформулируй еще раз пожалуйста. Что означает "запись была во временном промежутке?" Это значит "Date_Created BETWEEN Start AND End" или что-то другое? Что значат фразы "предыдущий временной промежуток" и "текущий временной промежуток"? Предыдущий и текущий по отношению к чему? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 12:00 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
stomsky, есть вторая таблица tbl2 со значениями с полями Start, End и значениями примерно следующими: Start End ... 2017-07-09 2017-09-23 2017-07-24 2017-08-06 2017-08-07 2017-08-20 2017-08-21 2017-09-03 Если Date_Created попадает в один из промежутков из таблицы tbl2, то Start и End из tbl1 заполняются соответствующими значениями. Если Date_Created пуста, то, соответственно, выставляются максимальные значения из таблицы tb2 ( т.е. текущий промежуток времени). предыдущие временные промежутки - это все те, что не последние т.е. не текущий (2017-08-21 2017-09-03). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 12:06 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
pr0b3l1987Start End ... 2017-07-09 2017-09-23 <-- ?????? 2017-07-24 2017-08-06 2017-08-07 2017-08-20 2017-08-21 2017-09-03 В этом примере первая строка задает временной интервал, перекрывающий все три следующих (с июля по сентябрь). Это очепятка? Я правильно догадываюсь, что интервалы в tbl2 не пересекаются, а идут строго один за другим? pr0b3l1987Если Date_Created попадает в один из промежутков из таблицы tbl2, то Start и End из tbl1 заполняются соответствующими значениями. Если Date_Created пуста, то, соответственно, выставляются максимальные значения из таблицы tb2 ( т.е. текущий промежуток времени). Значения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? По-моему, сравнивать надо значения tbl1.Date_Created с tbl2.Start и tbl2.End. Или я все-таки неверно понимаю задачу? pr0b3l1987предыдущие временные промежутки - это все те, что не последние т.е. не текущий (2017-08-21 2017-09-03). Т.е. "текущий временной промежуток" - это строка из таблицы tbl2, задающая интервал, в который попадает сегодняшняя дата? Вот сейчас у меня на календаре 23.08.2017, поэтому "текущим" стал приведенный тобой интервал (2017-08-21 2017-09-03). Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 12:41 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
stomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе. Предлагаю такой вариант (T-SQL): авторSELECT * FROM tbl1 WHERE End < getdate() AND Date_Created IS NOT NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 12:48 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
stomskystomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе. Предлагаю такой вариант (T-SQL): авторSELECT * FROM tbl1 WHERE End < getdate() AND Date_Created IS NOT NULL ДА, запрос почти верен, нужно обыграть только еще одно условие - Если Name есть и в текущем Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем.. Прошу прощение, что сложно излагаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 13:35 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
pr0b3l1987Если Name есть и в текущем Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем.. Вот так? Код: sql 1. 2. 3. 4. 5.
pr0b3l1987Прошу прощение, что сложно излагаюсь. Не сложно. Просто такое ощущение, что русский тебе не родной язык. Я минут по пять медитирую над твоим текстом. Не обижайся только ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 14:22 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
Точнее так (без ""): Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 14:23 |
|
Составление запроса.
|
|||
---|---|---|---|
#18+
Да что такое?! )))) Вот так(без "[b]"): Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 14:23 |
|
|
start [/forum/topic.php?fid=32&fpage=10&tid=1540141]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 405ms |
0 / 0 |