![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос на последнюю дату внесения [D6, IB6.x, FireBird]
galexis © (2003-08-11 16:29:00)
Уважаемые мастера! Помогите пожалуйста составить SQL запрос. Из БД выбирается запись удовлетворяющая куче условий. Нужна одна запись. А появляется две. Различаются они датой внесения записи (поле DTZAP). Надо чтобы осталась последняя внесенная запись (по дате). Т.е., что надо добавить к моему запросу?
Zacho (2003-08-12 07:41:00) [1]
У тебя FB ? Если да, то самое простое:
SELECT FIRST 1 .... ORDER BY DTZAP DESC
Johnmen (2003-08-11 18:17:00) [2]
Если борешься за быстроту, то лучше добавить в твой запрос ORDER BY <datefield> DESC, а в приложении обратиться к первой записи НД.
Anatoly Podgoretsky (2003-08-11 17:59:00) [3]
И пошло опять по кругу
galexis (2003-08-11 17:47:00) [4]
А нельзя связать как нибудь с другими таблицами из основного запроса с помощью JOIN?
Reindeer Moss Eater (2003-08-11 17:44:00) [5]
Не хочешь - не повторяй. Я же не настаиваю.
galexis (2003-08-11 17:44:00) [6]
У меня 15 условий в запросе после Where. Точнее это максимум 15, т.к. запрос формируется пользователем, т.е. если пользователь ввел наименование предприятия в запрос добавится and NAME LIKE, ввел наименование улицы добавится еще And ... А теперь еще и вложенный запрос. Мне в нем что повторять все условия что-ли?
Reindeer Moss Eater (2003-08-11 17:40:00) [7]
Если выкинуть WHERE во вложенном запросе ничего не находит. Но и ошибки не пишет
И это неправильно по твоему?
galexis (2003-08-11 17:37:00) [8]
>Reindeer Moss Eater
Если выкинуть WHERE во вложенном запросе ничего не находит. Но и ошибки не пишет
galexis (2003-08-11 17:33:00) [9]
>HSolo
Точно. Так работает. Только вот теперь неизвестно, что писать в Where. Не перечислять же все условия основного запроса?
Reindeer Moss Eater (2003-08-11 17:31:00) [10]
Ну и что? Увидел похожее слово?
Union исключит повторяющиеся записи в ОБОИХ селектах. И никак не повлияет на повторяемость записей в каждом селекте.
Вот тебе для подсказки. Выполни, не меняя ничего.
select * from Table where fld1 = (select MAX(fld1) from Table)
HSolo (2003-08-11 17:30:00) [11]
...and (DTZAP = (select MAX(DTZAP) from table t Where t.Fld1=.... and t.fld2=.. ))
galexis (2003-08-11 17:27:00) [12]
Ну там же написано про UNION "Комбинирует результаты двух или более инструкций SELECT создавая одиночную динамическую таблицу исключая повторяющиеся строки"
Reindeer Moss Eater (2003-08-11 17:21:00) [13]
Известно.
А зачем оно тебе?
Думаешь с UION выберет меньше записей, чем без него?
galexis (2003-08-11 17:18:00) [14]
Да уж. Может Вам известно как UNION использовать?
Reindeer Moss Eater (2003-08-11 17:14:00) [15]
Блин, не везет тебе сегодня.
galexis (2003-08-11 17:11:00) [16]
Тоже пишет Token Unknown
galexis (2003-08-11 17:07:00) [17]
12 к вашему 10 относилось. Сейчас проверю 11
galexis (2003-08-11 17:06:00) [18]
После AND я уже пробовал. Ошибку пишет "неизвестный оператор select". Я тут вот про вложенный оператор select - UNION читаю, может как с ним?
Reindeer Moss Eater (2003-08-11 17:03:00) [19]
У меня уже есть select fld1, fld2, ... from Table where Fld1=.... and fld2=.. and ..
select fld1, fld2, ... from Table where Fld1=.... and fld2=.. and .. and (DTZAP = select MAX(DTZAP) from table Where Fld1=.... and fld2=.. )
Reindeer Moss Eater (2003-08-11 17:02:00) [20]
В конце. После And.