Можно ли сформировать запрос

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Можно ли сформировать запрос

Сообщение Al Prad » 12.02.2008 (Вт) 17:52

Здравствуйте!

В базе данных раньше были поля Date (c датой) и Smena (со сменой 1 или 2). Был запрос Select * From table order by Date, Smena. Все работало как надо.

Теперь я изменил программу так, что в поле Data вносится не только дата, но и время создания записи(напр. 12.02.2008 16:43:00).
Иногда бывает так, что первая смена добавляет свою запись позже второй и при таком запросе имеем за определенную дату сначала вторую смену, а потом первую.

Можно ли подправить запрос так, чтобы смены шли нормально - сначала 1, потом 2 так:

Date-12.02.2008 16:43:00 Smena-1
Date-12.02.2008 11:00:00 Smena-2

Первая строка создана позже, но идет перед второй сменой.

Спасибо.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 12.02.2008 (Вт) 18:51

в order by
Date и Smena местами поменять не пробовал?

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 13.02.2008 (Ср) 11:04

Пробовал. Не годится.
Сначала идут все 1-е смены за 2007, потом все 1-е за 2008, потом все 2-е за 2007, потом все вторые за 2008.
Не то.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.02.2008 (Ср) 11:14

1) Измени программу так, чтобы время писалось отдельно от даты.
2) Сортируй по ID записи.
3) А вообще дурацкая логика у программы - если у смен четкое деление по времени, с какой стати первая лезет в программу после второй?
Лучший способ понять что-то самому — объяснить это другому.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 13.02.2008 (Ср) 14:17

1. Можно как вариант, но лениво. Придется код перелопачивать в нескольких формах. Так и было первоначально, пока я не пошел навстерчу пожеланиям :x
2. ID тем больше, чем позже была сделана запись? Даже если запись сделана сегодня, но за позавчера?
3. Первая смена может не создать своей записи вовремя - были пьяные, например. А как протрезвели - так и создали, но уже после 2-й :D

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.02.2008 (Ср) 15:03

ID тем больше, чем позже была сделана запись?
Да.
Даже если запись сделана сегодня, но за позавчера?
"За позавчера" - интерпретация значения логикой программы, к ID это отношения не имеет. Если в логике участвуют отдельно понятия "время создания записи" и "время, которое описывает запись", то без дополнительного поля не обойтись. Одно поле - дата создания записи - уже есть, второе поле - дата "за позавчера", по нему-то и надо сортировать. И проставлять в него значения должны протрезвевшие пользователи.

Если используется только "время, которое описывает запись по умолчанию равное моменту создания", то нужно дать возможность пользователям его изменять.
Лучший способ понять что-то самому — объяснить это другому.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 13.02.2008 (Ср) 15:39

Согласен со всем сказанным на 100 %.

Пользователи захотели дообавить время для контроля, в котором часу сделана запись, что и было сделано. Теперь выяснились 2 вещи:

1. Записи делаются не вовремя , что и приводит к перетасовке записей.
2. По факту получается, что время им в общем-то не нужно, поскольку они делают записи когда попало. Теперь им даже плевать на время.

Чтобы не вводить сейчас отдельной ячейки для времени, не переделывать код - решил чуть подправить запрос, пойдя по пути наименьшего R. Возвращаясь к моему вопросу про запрос - можно ли его модифицировать? Или придется время выкидывать?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.02.2008 (Ср) 15:49

Ну да, можно его откинуть при сортировке, пример для аксесса:
Код: Выделить всё
Order By CDate(Format(Date, "dd.mm.yyyy")), Smena
Лучший способ понять что-то самому — объяснить это другому.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 13.02.2008 (Ср) 18:53

Во, самое оно!
То, что надо.
Спасибо!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.02.2008 (Чт) 9:02

Не надо сортировать по ID, это порочно.
Функцию же лучше использовать Fix, а не CDate.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

    TopList  
cron