Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как лучше сделать?  [new]
harisma
Member

Откуда:
Сообщений: 243
Есть табличка в базе. У нее есть 5 полей. Мне надо выбрать из нее данные по одному из полей, но так, чтобы полученная выборка была сгруппирована по другому полю. Обязательно ли использовать для этого конструкцию Group By (в ней придется и все остальные поля перечислять), или можно обойтись просто Order By по этому нужному мне полю?
11 май 12, 13:24    [12535894]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
harisma, так выбирайте первое, сортируя по второму, и если нужно, то группируя по третьему. Так будет лучше всего.
11 май 12, 13:28    [12535930]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
а зачем перечислять все остальные поля? И что значит надо выбрать данные из одного из полей, а группировать по другому - если это так, то надо агрегировать данные по этому полю, а о том каким образом ничего не сказано.
11 май 12, 13:30    [12535953]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
order by - ты просто сортируешь записи по возрастанию/убыванию
group by - группируешь по выбранному полю/полям.
используй group by
11 май 12, 13:30    [12535966]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
harisma
Member

Откуда:
Сообщений: 243
Мистер Хенки
а зачем перечислять все остальные поля?

А потому что иначе выборка не работает.
Выборка у меня например такая:
        
  SELECT DocFieldID, JournID, JournFieldID, JournFieldName FROM DOCJOURNFIELDMAPS 
  WHERE DOCID = '12345' GROUP BY JournID, DocFieldID, JournFieldID, JournFieldName


В результате мне надо получить данные, сгруппированные по полю JournID (в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны, но без них выборка не хочет выполняться)

Что посоветуете?
11 май 12, 13:39    [12536056]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
harisma
В результате мне надо получить данные, сгруппированные по полю JournID (в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны, но без них выборка не хочет выполняться)

Если "остальные поля не нужны", то что они делают в запросе ?
11 май 12, 13:41    [12536073]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Glory
harisma
В результате мне надо получить данные, сгруппированные по полю JournID (в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны, но без них выборка не хочет выполняться)

Если "остальные поля не нужны", то что они делают в запросе ?

+1
11 май 12, 13:43    [12536094]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
harisma
Member

Откуда:
Сообщений: 243
Glory
Если "остальные поля не нужны", то что они делают в запросе ?


Вы читать сообщение внимательно умеете???

Я писал:

... в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны
11 май 12, 13:44    [12536103]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
harisma
Мистер Хенки
а зачем перечислять все остальные поля?

А потому что иначе выборка не работает.
Выборка у меня например такая:
        
  SELECT DocFieldID, JournID, JournFieldID, JournFieldName FROM DOCJOURNFIELDMAPS 
  WHERE DOCID = '12345' GROUP BY JournID, DocFieldID, JournFieldID, JournFieldName


В результате мне надо получить данные, сгруппированные по полю JournID (в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны, но без них выборка не хочет выполняться)

Что посоветуете?

агрегировать остальные поля. есть разные функции агрегации (sum, max,min).
11 май 12, 13:46    [12536121]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
harisma
Glory
Если "остальные поля не нужны", то что они делают в запросе ?


Вы читать сообщение внимательно умеете???

Я писал:

... в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны

ок при группировке, поля не входящие в список группировки в списке выборки надо агрегировать.
11 май 12, 13:48    [12536134]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
harisma
Вы читать сообщение внимательно умеете???

Я писал:

... в селекте мне нужны все перечисленные там поля, а вот в выражении Group By остальные поля кроме JournID мне не нужны

Замечательная позиция
Т.е. поля нужны, но соблюдать синтаксис я не хочу.
Как мне "починить" сервер, чтобы он воспринимал мой синтаксис ?
Вы сами то понимаете, что хотите получить ?
При нескольких одинаковых JournID какую запись вы желаете видеть ?
11 май 12, 13:48    [12536137]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Glory
При нескольких одинаковых JournID какую запись вы желаете видеть ?

Волшебный хрустальный шар подсказывает, что ТС ответит, что ему нужны все записи.
А посему пора отправить в Рекомендации по оформлению сообщений в форуме
11 май 12, 13:50    [12536162]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
harisma
Member

Откуда:
Сообщений: 243
Так, разговор заходит в тупик...
Мне не нужны агрегированные значения по тем полям. Мне нужны сами значения этих полей, но чтобы в результирующей выборке они были "собраны кучкой" со своим JournID и я потом пробегаясь по полученному набору записей мог дальше с этими полями работать, как мне надо.
11 май 12, 13:51    [12536166]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
rector
Member

Откуда: Киев
Сообщений: 57
harisma,

да, и какой результат вы хотите получить от своего запрса ?
сгруппировать по одному полю не получится, что тогда выводить в остальные поля? Вот для исключения такой неоднозначности GROUP BY и требует указания всего что есть в SELECT (кроме агрегирующих функций)
11 май 12, 13:51    [12536174]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
harisma
Так, разговор заходит в тупик...
Мне не нужны агрегированные значения по тем полям. Мне нужны сами значения этих полей, но чтобы в результирующей выборке они были "собраны кучкой" со своим JournID и я потом пробегаясь по полученному набору записей мог дальше с этими полями работать, как мне надо.

Я знал.
11 май 12, 13:51    [12536175]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
harisma
Мне не нужны агрегированные значения по тем полям. Мне нужны сами значения этих полей, но чтобы в результирующей выборке они были "собраны кучкой" со своим JournID и я потом пробегаясь по полученному набору записей мог дальше с этими полями работать, как мне надо.

Если записей несколько, кто угадает, какая именно вам нужна ?
11 май 12, 13:52    [12536180]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
harisma
Так, разговор заходит в тупик...
Мне не нужны агрегированные значения по тем полям. Мне нужны сами значения этих полей, но чтобы в результирующей выборке они были "собраны кучкой" со своим JournID и я потом пробегаясь по полученному набору записей мог дальше с этими полями работать, как мне надо.

order by в курсоре и бегайте по ним на здоровье
11 май 12, 13:55    [12536215]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
rector
Member

Откуда: Киев
Сообщений: 57
harisma,

может тогда использовать ORDER BY JournID ? Раз нужны все записи ?
будут вам данные "кучками" по JournID и все остальные наборы.
11 май 12, 13:55    [12536220]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше сделать?  [new]
harisma
Member

Откуда:
Сообщений: 243
В обсуждении все же находится истина. :)
В общем я понял в итоге, что Group by в данном запросе мне не нужен. Вполне достаточно Order by (о чем я в самом начале и спрашивал :))
Group By тут действительно будет излишним.

Всем спасибо. Тему можно закрывать.

ПС: прошу простить, если нарушил какие каноны данного форума.
11 май 12, 13:57    [12536238]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить