![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| coyl |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 13.6.2006 Репутация: нет Всего: 1 |
Что-то тут спрашивают о элементарных запросах в основном. А у меня действительно сложный запрос. Вот к примеру есть таблица с объектами. Поля в ней - id, name. id - это автоинкрементный суррогатный ключ. Предположим, что Объекты добавлялись, и, иногда, удалялись. Получилось что-то типа
Как мы видим - в ключах (id) есть дырки. Например, пропущены ключи 6, 9, 12-14. Так вот задача - найти последний (максимальный) пропущенный ключ, в данном случае - 14. Вообще это задание для MSSQL, и там реализуется при использовании view'иков. Однако, если есть идеи, как реализовать в любой другой системе (даже можно в два запроса) - буду благодарен. Хочу заметить, что использование скриптов (php, perl etc.) исключено. Только средствами СУБД. Хочу также заметить, что зада точно решаемая. |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 6 Всего: 42 |
Похоже, что так.
Правда, таблица используется 3 раза. Может, удастся еще оптимизировать запрос -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
А если типа такого?
Т.е. находим наибольший id, перед которым "дырка", и берем предыдущее значение... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 6 Всего: 42 |
Да, LEFT JOIN тут сокращает количество операций. Думаю, что это оптимальный вариант
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| coyl |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 13.6.2006 Репутация: нет Всего: 1 |
Ого вот это да. Это круто! Спасибо! Даже не думал, что так быстро найдётся решение =)
|
|||
|
||||
| Glip |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 473 Регистрация: 30.12.2006 Репутация: 1 Всего: 18 |
||||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
Ну да. А чем 0 не удовлетворяет заданному условию? ;)
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |