powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В раздумье о DISTINCT
11 сообщений из 11, страница 1 из 1
В раздумье о DISTINCT
    #32100809
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DISTINCT позволяет указать уникальность набора выводимых полей в запросе, а вот мне бы хотелось уникальность по одному полю, т.е. в запросе должны присутствовать еще и другие поля.
Описанную ситуацию разрулил через подзапрос с TOP 1, но это так ужасно тормозит на 60 тыс записей. Запрос оставлял на ночь, но ему этого времени не хватило :((
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100814
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял, то достаточно ввести группировку по этому полю.
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100836
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В запросе должны выводиться другие поля, и тогда их тоже придется группировать, что не подходит
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100861
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда спрашивай подоходчивей. Лучше всего приведи структуру таблиц (упрощенно, типа table1(id, field1), table2(id, field1, field2)), как они связанны, и что ты хочещь получить.
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100869
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот эта ситуация:
Была модель абстрактных сущностей 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
В раздумье о DISTINCT
    #32100896
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы уверенны что для каждлго BORel_BOID существует единственный BORel_ParentID? из струтуры видно, что их может быть много. Какой выбирать?
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100902
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не стал дописывать, что остальные отношения просто выбрасываются (для них нет места в новой модели :) ), а выбрать можно первое попавшееся (хотя есть у меня предикат для этого дела, но сейчас не важно).
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100933
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда открывай курсор и пускай его по отсортированному по BO_ID + BORel_ParentID набору данных.
А внутри цикла сравнивай текущие значения BO_ID и BORel_ParentID с предыдущими. Если BO_ID не изменилась, то не добавляй эту запись.
Примерно так.
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100942
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уверен, что существует красивое решение. Но пока ничего в голову не приходит.
kreek, спроси на форуме по MSSQL, там такие монстры обитают...
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100964
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай группировку, а агрегатные функции используй max или min
...
Рейтинг: 0 / 0
В раздумье о DISTINCT
    #32100977
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни, я сделал запрос, который нужен мне, но ему не хватило ночи, т.к. записей ОЧЕНЬ много, запрос такой:

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


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