Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В раздумье о DISTINCT / 11 сообщений из 11, страница 1 из 1
04.02.2003, 12:07
    #32100809
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
DISTINCT позволяет указать уникальность набора выводимых полей в запросе, а вот мне бы хотелось уникальность по одному полю, т.е. в запросе должны присутствовать еще и другие поля.
Описанную ситуацию разрулил через подзапрос с TOP 1, но это так ужасно тормозит на 60 тыс записей. Запрос оставлял на ночь, но ему этого времени не хватило :((
...
Рейтинг: 0 / 0
04.02.2003, 12:12
    #32100814
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Если я правильно понял, то достаточно ввести группировку по этому полю.
...
Рейтинг: 0 / 0
04.02.2003, 12:29
    #32100836
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
В запросе должны выводиться другие поля, и тогда их тоже придется группировать, что не подходит
...
Рейтинг: 0 / 0
04.02.2003, 12:45
    #32100861
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Тогда спрашивай подоходчивей. Лучше всего приведи структуру таблиц (упрощенно, типа table1(id, field1), table2(id, field1, field2)), как они связанны, и что ты хочещь получить.
...
Рейтинг: 0 / 0
04.02.2003, 12:50
    #32100869
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Вот эта ситуация:
Была модель абстрактных сущностей BO (Business Object) с отношением многие-ко-многим
[BO]
----
[BO_ID]
[BO_Name]

связь организована через вспомогательную таблицу BORel (BO Relation)
[BORel]
-------
[BORel_BOID]
[BORel_ParentID]
[BORel_Property]

Сейчас модель поменялась, отличие в связи, теперь отношение один-ко-многим

[BO]
----
[BO_ID]
[BO_Name]
[BO_ParentID]

Задача: закачать данные в новую модель.
Необходимо выбрать из таблицы BORel записи так, чтобы для BORel_BOID выбралось по одному BORel_ParentID, также нужны и остальные поля (BO_Name, BORel_Property).
...
Рейтинг: 0 / 0
04.02.2003, 13:10
    #32100896
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
А Вы уверенны что для каждлго BORel_BOID существует единственный BORel_ParentID? из струтуры видно, что их может быть много. Какой выбирать?
...
Рейтинг: 0 / 0
04.02.2003, 13:15
    #32100902
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Я не стал дописывать, что остальные отношения просто выбрасываются (для них нет места в новой модели :) ), а выбрать можно первое попавшееся (хотя есть у меня предикат для этого дела, но сейчас не важно).
...
Рейтинг: 0 / 0
04.02.2003, 14:16
    #32100933
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Тогда открывай курсор и пускай его по отсортированному по BO_ID + BORel_ParentID набору данных.
А внутри цикла сравнивай текущие значения BO_ID и BORel_ParentID с предыдущими. Если BO_ID не изменилась, то не добавляй эту запись.
Примерно так.
...
Рейтинг: 0 / 0
04.02.2003, 14:22
    #32100942
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Я уверен, что существует красивое решение. Но пока ничего в голову не приходит.
kreek, спроси на форуме по MSSQL, там такие монстры обитают...
...
Рейтинг: 0 / 0
04.02.2003, 14:39
    #32100964
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Сделай группировку, а агрегатные функции используй max или min
...
Рейтинг: 0 / 0
04.02.2003, 15:01
    #32100977
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В раздумье о DISTINCT
Парни, я сделал запрос, который нужен мне, но ему не хватило ночи, т.к. записей ОЧЕНЬ много, запрос такой:

SELECT [BORel_BOID]
FROM [BORel]
GROUP BY [BORel_BOID];

Полученную агрегацию сохраняю как таблицу Agr (чтобы быстрее было)

SELECT [a].[BORel_BOID] AS [BO_ID],
(SELECT TOP 1 b.[BORel_ParentID] FROM [BORel] AS b
WHERE [a].[BORel_BOID] = b.[BORel_BOID]) AS [BO_ParentID]
FROM [Agr] AS [a]

Т.е. я ищу альтернативный вариант
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В раздумье о DISTINCT / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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