Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / group by vs distinct / 25 сообщений из 28, страница 1 из 2
03.08.2009, 22:51
    #36124233
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
Пример:

select * from test

1 Moscow001 aaa
2 Moscow001 aab
3 London002 aac
4 London002 aad
5 Moscow001 aaa
6 Moscow001 aab
7 London002 aaa


select names,numbers from test
group by names,numbers

aaa London002
aaa Moscow001
aab Moscow001
aac London002
aad London002

select distinct(names),numbers from test

aaa London002
aaa Moscow001
aab Moscow001
aac London002
aad London002
...
Рейтинг: 0 / 0
03.08.2009, 22:53
    #36124237
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkm,

Казалось бы 2 одинаковых результата.
ВОпрос, имеет ли возможность group by какие-то приемущества/недостатки по сравнению с distinct в запросах? (учет использования агр.функций не писать)
...
Рейтинг: 0 / 0
04.08.2009, 08:29
    #36124447
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
Нет, смотрите план выполнения запроса. Баян
С уважением, Naf
...
Рейтинг: 0 / 0
04.08.2009, 10:01
    #36124632
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkm пишет:

Тут всё просто. Если вам нужно использовать агрегирующие функции, используйте
GROUP BY. Если не нужны -- DISTINCT.

GROUP BY без агрегирующих функций по идее может и не работать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.08.2009, 10:11
    #36124676
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
MasterZiv
gjkmpjdfntkm пишет:

Тут всё просто. Если вам нужно использовать агрегирующие функции, используйте
GROUP BY. Если не нужны -- DISTINCT.

GROUP BY без агрегирующих функций по идее может и не работать.
с чего бы ему не работать то?
...
Рейтинг: 0 / 0
04.08.2009, 13:37
    #36125419
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
Возможны СУБД-специфичные различия. Например, в MySQL GROUP BY гарантирует сортировку результата, а DISTINCT - нет.
...
Рейтинг: 0 / 0
04.08.2009, 14:39
    #36125649
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoftВозможны СУБД-специфичные различия. Например, в MySQL GROUP BY гарантирует сортировку результата, а DISTINCT - нет.Возможно. Но я бы для сортировки использовал прямую инструкцию, предназначенную конкретно для этого: ORDER BY
...
Рейтинг: 0 / 0
04.08.2009, 14:41
    #36125657
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoftВозможны СУБД-специфичные различия. Например, в MySQL GROUP BY гарантирует сортировку результата, а DISTINCT - нет.
Djn 'nj vf
...
Рейтинг: 0 / 0
04.08.2009, 14:42
    #36125667
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
АнатоЛойmiksoftВозможны СУБД-специфичные различия. Например, в MySQL GROUP BY гарантирует сортировку результата, а DISTINCT - нет.
Djn 'nj vf
Пардон, но это настолько специфичные различия, что я на них бы никогда не надеялся (не использовал, то бишь...)
только ORDER BY гарантирует сортировку (если нет ошибок в СУБД :)
...
Рейтинг: 0 / 0
04.08.2009, 16:52
    #36126100
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
Почему спрашиваю, выполняется запрос:

авторselect Devicepool.name DevicePool,Device.name devicename,Device.description,DeviceNumplanMap.display,DeviceNumplanMap.label,NumPlan.dnorpattern intnumber,DeviceNumplanMap.e164mask extnumber from devicepool,device,DeviceNumplanMap,NumPlan
where device.fkdevicepool=devicepool.pkid
and
Device.pkid=DeviceNumplanMap.fkDevice
and
NumPlan.pkid=DeviceNumplanMap.fkNumPlan
and Device.name like 'SEP%'
group by Device.name,Devicepool.name,Device.description,DeviceNumplanMap.display,DeviceNumplanMap.label,NumPlan.dnorpattern,DeviceNumplanMap.e164mask
order by devicepool,intnumber

который выдает одинаковые Device.name,

результат повторяющихся данных SEP%:

Oleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)
Ivan SEP001BD4A SaveNo_DP Ivan 5939 5939 14 14 94(13)




пробовал делать

авторselect distinct Device.name devicename,Devicepool.name DevicePool,Device.description,DeviceNumplanMap.display,DeviceNumplanMap.label,NumPlan.dnorpattern intnumber,DeviceNumplanMap.e164mask extnumber from devicepool,device,DeviceNumplanMap,NumPlan
where device.fkdevicepool=devicepool.pkid
and
Device.pkid=DeviceNumplanMap.fkDevice
and
NumPlan.pkid=DeviceNumplanMap.fkNumPlan
and Device.name like 'SEP%'
/*group by Device.name,Devicepool.name,Device.description,DeviceNumplanMap.display,DeviceNumplanMap.label,NumPlan.dnorpattern,DeviceNumplanMap.e164mask */
order by devicepool,intnumber

записи Device.name также повторяются.

Как мне сделать, чтобы записи с подобными одинаковыми полями не повторялись?
...
Рейтинг: 0 / 0
04.08.2009, 18:04
    #36126273
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmПочему спрашиваю, выполняется запрос:Вот с этого и надо было начинать, а не морочить голову.
gjkmpjdfntkmКак мне сделать, чтобы записи с подобными одинаковыми полями не повторялись?а что должно быть в остальных полях?
...
Рейтинг: 0 / 0
04.08.2009, 18:20
    #36126297
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,
Пример формата данных

<devicename>SEP001B0</devicename>
<devicepool>Save_DP</devicepool>
<description>Ivan </description>
<display>Ivan </display>
<label>94(17)</label>
<intnumber>10</intnumber>
<extnumber>5859</extnumber>

При выборке значение в <devicename> не должны повторяться
...
Рейтинг: 0 / 0
04.08.2009, 18:23
    #36126305
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkm,

схема базы в самом конце

http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/datadict/6_1_1/dd_611.pdf
...
Рейтинг: 0 / 0
04.08.2009, 18:23
    #36126308
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
Не хотите отвечать на вопросы - пожалуйста, вот вам вариант:
Код: plaintext
select distinct Device.name from ...
повторений не будет.
...
Рейтинг: 0 / 0
04.08.2009, 18:25
    #36126315
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,

поле с SEP% должно быть уникальным,
все остальные записи могу быть как различными так и одинаковыми между собой
...
Рейтинг: 0 / 0
04.08.2009, 18:26
    #36126318
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,

В примере я привел, что

авторOleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)
Ivan SEP001BD4A SaveNo_DP Ivan 5939 5939 14 14 94(13)

что поле SEP001BD4A повторяется 2 раза
...
Рейтинг: 0 / 0
04.08.2009, 18:32
    #36126334
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmmiksoft,

поле с SEP% должно быть уникальным,
все остальные записи могу быть как различными так и одинаковыми между собойвы записи с полями не путаете?
...
Рейтинг: 0 / 0
04.08.2009, 18:35
    #36126340
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmmiksoft,

В примере я привел, что

авторOleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)
Ivan SEP001BD4A SaveNo_DP Ivan 5939 5939 14 14 94(13)

что поле SEP001BD4A повторяется 2 разаНу и?
Мой вариант выведет
Код: plaintext
1.
SEP001646E
SEP001BD4A
т.е. повторений не будет.
...
Рейтинг: 0 / 0
04.08.2009, 18:45
    #36126353
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,

а остальные таблицы??? вы смотрите только одно поле, а я привел запрос с множеством полей в разных таблицах
...
Рейтинг: 0 / 0
04.08.2009, 20:34
    #36126470
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmmiksoft,

а остальные таблицы??? вы смотрите только одно поле, а я привел запрос с множеством полей в разных таблицаха что должно быть в других полях - вы так и не ответили.
вы даже не привели пример желаемого результата для вашего-же примера.
...
Рейтинг: 0 / 0
04.08.2009, 23:35
    #36126596
vadiminfo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmgjkmpjdfntkm,

Казалось бы 2 одинаковых результата.
ВОпрос, имеет ли возможность group by какие-то приемущества/недостатки по сравнению с distinct в запросах? (учет использования агр.функций не писать)
Наверное, имеет недостатки использования не по назначению.
Например:
1) Логический аспект: вместо того чтобы спросить выбрать только уникальные записи, спрашивается сгруппировать записи по полям, используя дополнительное знание о том, что тада они будут уникальными. Не говоря уже о том, что кто-то встретив такое может поиметь подозрение об ошибке писавшего: забыл дописать групповую ф-ю? И должен будет тратить время на проверку такового подозрения.
Т.е. логическое усложнение запроса.
2) Если полей много, то очевидно, что выражение group by для извлечения уникальных записей сложнее. А стилевые соображения предполагают придерживаться одинакового подходжа во всех случаях.
Синтаксическое усложнение запроса, дополнительные риски ухудшения стиля кода приложения.
Все это несет риски удорожания и для разработки приложения, и тем более для сопровождения.
...
Рейтинг: 0 / 0
04.08.2009, 23:50
    #36126604
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
vadiminfoзабыл дописать групповую ф-ю?А, может, наоборот, приготовил фундамент для вероятного, с его точки зрения, добавления этой функции.
vadiminfoЕсли полей много, то очевидно, что выражение group by для извлечения уникальных записей сложнее.Совершенно не очевидно.
...
Рейтинг: 0 / 0
05.08.2009, 10:52
    #36127020
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,

Желаемый результат:

авторOleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)

но получаю
автор
Oleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)
Ivan SEP001BD4A SaveNo_DP Ivan 5939 5939 14 14 94(13)



схема базы в аттаче
...
Рейтинг: 0 / 0
05.08.2009, 12:51
    #36127463
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
gjkmpjdfntkmmiksoft,

Желаемый результат:

авторOleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)

но получаю
автор
Oleg SEP001646E Save_DP Ivan 5939 5939 14 14 94(13)
Ivan SEP001BD4A SaveNo_DP Ivan 5859 5859 10 10 94(17)
Ivan SEP001BD4A SaveNo_DP Ivan 5939 5939 14 14 94(13)
А по какому принципу в последних полях были выбраны значения "5859 5859 10 10 94(17)" ?
Кстати, а СУБД какая?
...
Рейтинг: 0 / 0
05.08.2009, 15:04
    #36127912
gjkmpjdfntkm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by vs distinct
miksoft,

extnumber - 5859 5859

intnumber - 10 10

label - 94(17)



db - informix
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / group by vs distinct / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]