Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возможно ли исключить дубли в запросе? 
:(
    Опции темы
ilta
Дата 1.11.2013, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Здравствуйте!
Есть база на MS SQL Server. Есть запрос вида select * from table where conditions, выводит он информацию следующего вида:
ФИО, ДАТА ПОСЕЩЕНИЯ, КОЛИЧЕСТВО, ПУНКТ НАЗНАЧЕНИЯ
'Иванов Иван Иванович', '10.10.2013', 345, 'Москва'
'Иванов Иван Иванович', '01.11.2013', 123, 'Питер'
'Петров Петр Петрович', '31.10.2013', 234, 'Воркута'
'Петров Петр Петрович', '15.10.2013', 123, 'Вологда'
'Семенов Семен Семенович', '25.10.2013', 333, 'Ставрополь'.
Вопрос следующий - возможно ли в принципе в запросе выбрать записи так, чтобы кроме общих условий для выборки этих строк были еще условия для каждого человека. Не знаю, как понятнее объяснить, покажу на примерах.
Пример 1:
Для каждого человека выбрать запись с большей датой, т.е. чтобы запрос выдавал:
'Иванов Иван Иванович', '01.11.2013', 123, 'Питер'
'Петров Петр Петрович', '31.10.2013', 234, 'Воркута'
'Семенов Семен Семенович', '25.10.2013', 333, 'Ставрополь'
Пример 2:
Для каждого человека выбрать запись с каким-то определенным числом, т.е. чтобы запрос выдавал:
'Иванов Иван Иванович', '01.11.2013', 123, 'Питер'
'Петров Петр Петрович', '15.10.2013', 123, 'Вологда'
'Семенов Семен Семенович', '25.10.2013', 333, 'Ставрополь'
Пример 3:
Есть список приоритетных городов(Москва, Воркута), для каждого человека выбрать запись с приоритетным городом:
'Иванов Иван Иванович', '10.10.2013', 345, 'Москва'
'Петров Петр Петрович', '31.10.2013', 234, 'Воркута'
'Семенов Семен Семенович', '25.10.2013', 333, 'Ставрополь'

Возможно ли это и, если возможно, то какая конструкция для этого используется? Если можно, пример, но и без примера буду благодарна, хоть бы знать в какую сторону смотреть.
Заранее всем спасибо за внимание! smile 

PM MAIL   Вверх
Akina
Дата 1.11.2013, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Всё это возможно.

Цитата(ilta @  1.11.2013,  12:54 Найти цитируемый пост)
Для каждого человека выбрать запись с большей датой

GROUP BY + MAX()

Цитата(ilta @  1.11.2013,  12:54 Найти цитируемый пост)
Для каждого человека выбрать запись с каким-то определенным числом

WHERE

Цитата(ilta @  1.11.2013,  12:54 Найти цитируемый пост)
выбрать запись с приоритетным городом

А это уже оконные функции, не факт, что твоя версия сервера их поддерживает. Возможно, придётся обходиться бабкиными методами.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ilta
Дата 1.11.2013, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Akina, спасибо за ответ!

Цитата(Akina @ 1.11.2013,  12:00)
Всё это возможно.

А одновременно? Например, если города разных приоритетов, то выбираем по городу, если нет приоритетного города, то выбираем по дате?

Цитата(Akina @ 1.11.2013,  12:00)
А это уже оконные функции, не факт, что твоя версия сервера их поддерживает. Возможно, придётся обходиться бабкиными методами.

Можно подробнее про оконные функции и про бабкины методы? Сервер MS SQL Server 2008R2

PM MAIL   Вверх
Akina
Дата 1.11.2013, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(ilta @  1.11.2013,  14:23 Найти цитируемый пост)
MS SQL Server 2008R2

ну тогда никаких проблем... http://technet.microsoft.com/ru-ru/library...v=sql.105).aspx

Добавлено через 1 минуту и 21 секунду
Цитата(ilta @  1.11.2013,  14:23 Найти цитируемый пост)
А одновременно? Например, если города разных приоритетов, то выбираем по городу, если нет приоритетного города, то выбираем по дате?

Это называется "выбираем по город+дата".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ilta
Дата 5.11.2013, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Akina, спасибо большое! Сортировка по дате у меня получилась, а по городу не соображу как((( Есть ли возможность указать два приоритетных города?
PM MAIL   Вверх
ilta
Дата 7.11.2013, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Akina, спасибо большое еще раз! smile 
Отсортировала по городу с помощью case.
PM MAIL   Вверх
Akina
Дата 7.11.2013, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(ilta @  7.11.2013,  10:06 Найти цитируемый пост)
Отсортировала по городу с помощью case. 

 smile 
А почему не просто сортировка по двум полям? 
Код

Order By tourists.date, towns.priority
?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ilta
Дата 7.11.2013, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Неправильно выразилась. С помощью case определила towns.priority, отсортировала, конечно, через order by.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0798 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.