powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Составление запроса.
10 сообщений из 10, страница 1 из 1
Составление запроса.
    #39509183
pr0b3l1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые знатоки. Есть таблица со следующими полями:

Name, Date_Created, Start, End.

Таблица заполнена по следующим условиям: Если есть Date_Created, то заполняются поля Start и End(берутся временные промежутки, куда попадает Date_Created).
Если Date_Created пуста, то Start и End заполняются MAX(Start) и MAX(End) ( т.е. текущим промежутком, берутся из отдельной таблицы).

Задача следующая: Необходимо отобрать все записи, в которой будут ТОЛЬКО те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created НЕ пуста.
...
Рейтинг: 0 / 0
Составление запроса.
    #39509211
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pr0b3l1987Задача следующая: Необходимо отобрать все записи, в которой будут ТОЛЬКО те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created НЕ пуста.
Ничего не понял в постановке задачи... Сформулируй еще раз пожалуйста.

Что означает "запись была во временном промежутке?"
Это значит "Date_Created BETWEEN Start AND End" или что-то другое?

Что значат фразы "предыдущий временной промежуток" и "текущий временной промежуток"? Предыдущий и текущий по отношению к чему?
...
Рейтинг: 0 / 0
Составление запроса.
    #39509214
pr0b3l1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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).
...
Рейтинг: 0 / 0
Составление запроса.
    #39509245
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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). Верно?
...
Рейтинг: 0 / 0
Составление запроса.
    #39509255
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи?
Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе.
Предлагаю такой вариант (T-SQL):
авторSELECT *
FROM tbl1
WHERE End < getdate()
AND Date_Created IS NOT NULL
...
Рейтинг: 0 / 0
Составление запроса.
    #39509291
pr0b3l1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stomskystomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи?
Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе.
Предлагаю такой вариант (T-SQL):
авторSELECT *
FROM tbl1
WHERE End < getdate()
AND Date_Created IS NOT NULL

ДА, запрос почти верен, нужно обыграть только еще одно условие - Если Name есть и в текущем Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем..

Прошу прощение, что сложно излагаюсь.
...
Рейтинг: 0 / 0
Составление запроса.
    #39509354
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pr0b3l1987Если Name есть и в текущем Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем..

Вот так?

Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM tbl1
WHERE End < getdate()
AND Date_Created IS NOT NULL
AND Name NOT IN (SELECT Name FROM tbl1 WHERE Begin >= getdate())



pr0b3l1987Прошу прощение, что сложно излагаюсь.
Не сложно. Просто такое ощущение, что русский тебе не родной язык. Я минут по пять медитирую над твоим текстом.
Не обижайся только
...
Рейтинг: 0 / 0
Составление запроса.
    #39509355
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее так (без ""):
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM tbl1
WHERE End < getdate()
AND Date_Created IS NOT NULL
[b]AND Name NOT IN (SELECT Name FROM tbl1 WHERE Begin >= getdate())
...
Рейтинг: 0 / 0
Составление запроса.
    #39509356
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да что такое?! ))))
Вот так(без "[b]"):
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM tbl1
WHERE End < getdate()
     AND Date_Created IS NOT NULL
     AND Name NOT IN (SELECT Name FROM tbl1 WHERE Begin >= getdate())
...
Рейтинг: 0 / 0
Составление запроса.
    #39509395
pr0b3l1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stomsky,

Да, то, что нужно. Пишу так коряво, потому-что на самом деле, сам запрос выглядит чудовищно, и это только его малая часть. У самого в голове уже мешанина:)
Спасибо тебе больщушее!
Тему можно закрывать :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Составление запроса.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]