|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
Здравствуйте. Помогите с запросом, пожалуйста! Была таблица с полями: ФИО, группа детсада, ДатаНачала, ДатаОкончания. В таблице было отражено движение детей по группам детсада. Например, с 01.09.2017 по 31.08.2018 - ребенок в ясельной группе, а с 01.09.2018 по 31.08.2019 - в младшей. И так дальше вплоть до подготовительной группы. Замечу, что переход из группы в группу не всегда был с 1 сентября, ребенок может перевестись в любой день в группу постарше или помладше. Необходимо запросом получать данные на конкретную дату о составе групп. Раньше я писала так: SELECT ФИО, группа FROM Таблица WHERE ДатаНачала <= [РасчетнаяДата] AND ДатаНачала >= [РасчетнаяДата]. Подозреваю, что и с BETWEEN работало бы. Но потом я решила, что указывать две даты в таблице - это избыточность. Ведь между датой окончания и следующей за ней датой начала никогда не бывает разрыва - ребенок не может быть вне группы, он обязательно в какой-то группе. Я убрала ДатуОкончания. Таблица стала: ФИО, группа детсада, ДатаНачала. По прежнему необходимо запросом получать данные на конкретную дату о составе групп. Я пыталась вложенным запросом типа: тра-ля-ля WHERE ДатаНачала = (SELECT MAX (ДатаНачала) FROM Таблица WHERE ДатаНачала <= [РасчетнаяДата]). Но выдает не то. Не можете ли подсказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 08:02 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel,подозреваю, что запрос был Код: sql 1. 2. 3.
? Используй коррелированный подзапрос Код: sql 1. 2. 3.
Как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 09:44 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
Панург, да, запрос был WHERE ДатаНачала <= [РасчетнаяДата] AND ДатаОкончания>= [РасчетнаяДата]. Нет, не получается. Выдает всех детей во всех группах, в том исле в тех, из которых они уже перешли. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 13:03 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel, А если так? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 13:25 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurelНет, не получается. Выдает всех детей во всех группах, в том исле в тех, из которых они уже перешли.Дай-ка пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 13:30 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel, -для начала прочтите про формирование строки WHERE для дат тынц -навряд ли возможно полноценно ответить на Ваш вопрос не видя схему БД ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 13:55 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
Вот пример. Michelle, сейчас попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 14:07 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel, Должно быть как-то так Код: sql 1. 2. 3.
Дата вводилась видимо пограничная. Ну и неплохо бы вводить дату закрытия - воспитанник уходит из д/с. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 17:30 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 00:21 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
Спасибо, Панург и Michelle, работает и то и то. Единственное - долговато формирует сводную таблицу по этому запросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 13:48 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurelЕдинственное - долговато формирует сводную таблицу по этому запросу. Вот запрос должен работать быстро: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 19:24 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel, В целом это нормальная практика хранить даты начала и окончания периода в одной записи, если не хочется вести дату окончания вручную, то можно это поручить триггеру. Имея все данные в одной строке проще индексы настроить, альтернатива падение производительности. Так что плюсов для хранения даты окончания больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 00:15 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
Adilby, действительно быстрее. Спасибо. Swa111, когда я хранила дату окончания, было гораздо удобней. Даже не знаю. Я поняла из учебников по базам данных, что избыточность - это плохо. Но если удобней? Даже не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 15:10 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
OkeTurel ...Я поняла из учебников по базам данных, что избыточность - это плохо. Но если удобней? Даже не знаю. Лично я не вижу в этом нарушения основных правил "базостроения" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 17:16 |
|
Запрос на актуальную дату
|
|||
---|---|---|---|
#18+
sdku, Все зависит от того, быстро ли и сноровисто ли , ну и естественно - правильно ли ты умеешь готовить запросы и процедуры с запросами.. В особо сложных случаях, когда знаний и опыта не хватает, ну прям специально денормализую. Но это особые случаи, а не когда в 100 таблицах дублируются по десятку полей. Норму тоже нужно знать. По слухам есть 4 и даже 5 нормализации, но это наверное вааще "Зашквар", которого в этой жизни не достичь, разве что только через 5-6 следующих жизней. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 23:59 |
|
|
start [/forum/topic.php?fid=45&fpage=24&tid=1610388]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 149ms |
0 / 0 |