![]() |
|
Модераторы: gambit |
![]()
|
|
| reborn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 20.5.2010 Где: Russia, Moscow Репутация: нет Всего: -4 |
Добрый день!
Прошу подсказать с созданием запроса. Какая у меня цель и данные? У меня есть таблица, где есть id, id_car и др. параметры. Проблема в том, что id_car может несколько раз может совпадать ( конечно же id - primary key && auto_increment ), потому в данной таблице каждый раз добавляются новые данные, где находится авто ( широта, долгота ), и нужно хранить старые данные ( где находилось авто ). Поэтому id_car может повторятся несколько раз. Сам вопрос: как в такой таблице я могу выбрать все записи, но отсортировав так результат запроса, чтобы id_car не повторался ( а к примеру мы брали бы самый последний занесенный id_car в таблицу ( по id или time ) )? Заранее спасибо |
|||
|
||||
| EagleOne |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.11.2009 Репутация: нет Всего: 1 |
Ну например так:
t - это собсно ваша таблица где все храниться, sel_t и filt_t это просто её псевдонимы для выборки и фильтрации соответственно... Это сообщение отредактировал(а) EagleOne - 3.8.2010, 08:16 |
||||
|
|||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Если речь про MS SQL, наиболее правильно так:
|
|||
|
||||
| EagleOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.11.2009 Репутация: нет Всего: 1 |
А вы уверены, что строить CTE с секционированием на лету это хорошая идея? |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
1. CTE в случае отсутствия рекурсии - это обычный подзапрос. Что вам не нравится?
2. Что такое "секционирование"? Если имеется ввиду ранжирование с partition-ом - то.. Ну - смотрите план вашего запроса. Очевидно, что ваш in приведёт на самом деле к джойну с подзапросом для выборки максимальных id_car (и групировкой по id_car). При наличии соответствующего индекса - вариант с джойном работает уже несколько дольше (на 10000 записей). Причём - тут, что важно, что в данном случае в индекс входят все поля (что на практике не так). Вообще - чем очевидней можно выразить результат, тем лучше. При более завороченной структуре, внутри какого-нибудь обширного запроса оптимизатор может не развернуть in в джойн.. Добавлено через 30 секунд PS. Ток я там from в подзапросе оказывается пропустил. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |