powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Сравнение множеств в ASE 15
9 сообщений из 9, страница 1 из 1
Сравнение множеств в ASE 15
    #36939977
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Толи праздники сказываются, толи лыжи не едут...

Есть две таблицы 1-маршрут, 2-путевые точки.

маршрут
id_pathdate_pathdescription101.01.2010...202.01.2010...303.01.2010...

Путевые точки (связь по id_path)
id_wpid_pathlatlon()sort_idx111112122231333421115222262333735518366293773

Из примера видно, что маршруты с id_path 1 и 2 одинаковые. Координаты(lat и lon)и последовательность(sort_idx) точек у них совпадают.

Нужно выбрать все не повторяющиеся маршруты. Либо 1 и 3, либо 2 и 3.

Помогите ПЛЗ.
Заранее благодарен всем откликнувшимся.
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36940421
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача достаточно нетривиальная. Реляционные БД плохо приспособлены для работы со множествами, так скажем совсем не приспособлены.

Просто как подход.
Необходимо сделать однозначную трансляцию матрицы (точек пути) в простое значение. Этим значением, например, может быть строковое представление пути. Хранить его можно в таблице маршрутов.
id_pathdate_pathdescriptionstr101.01.2010...(1;1)->(2;2)->(3;3)202.01.2010...(1;1)->(2;2)->(3;3)303.01.2010...(5;5)->(6;6)->(7;7)

Затем можно будет сделать просто запрос:
Код: plaintext
1.
2.
select min(id_path),str
from маршрут
group by str

В качестве "простого значения" может быть не только строковая переменная, но и числовая, бинарная и т.п. Главное придумать однозначную обратимую функцию перевода массива в значение.
Теоретически, его можно сделать хэшем приведенной строки. Но возникает опасность, когда совершенно два различных пути будут свернуты в один из-за того, что у них совпадет хэш. Потому требование об обратимости функции является обязательным.

И вторая подзадача, обеспечить актуализацию соответствия маршрута и его "слепка".
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36940445
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо iLLer,

Идея с хэшами точек в таблице маршрутов - это первое что мне пришло в голову.
Но я надеялся, что есть более простой способ.
Но думаю что все таки придется использовать хэш.
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36940563
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где вы тут работу с множествами увидали ?

Нет её тут. Была бы -- SQL как раз бы и был в тему.
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36940565
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_DenЛибо 1 и 3, либо 2 и 3.


А с чего это ты решил, что 1 -- не повторяющийся ?
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36941326
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv Где вы тут работу с множествами увидали ?

Нет её тут. Была бы -- SQL как раз бы и был в тему.

Та какая разница. Название задачи на ее решение не влияет.

MasterZiv А с чего это ты решил, что 1 -- не повторяющийся ?

Не понял я вопроса. Ну да, 1 и 2 повторяются
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36941553
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 08.11.2010 0:35, cherrex_Den wrote:
> А с чего это ты решил, что 1 -- не повторяющийся ?
> Не понял я вопроса. Ну да, 1 и 2 повторяются

Так с чего ты хочешь, чтобы 1 был, а 2 -- не было.
Они повторяются, оба.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36941942
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
On 08.11.2010 0:35, cherrex_Den wrote:
> А с чего это ты решил, что 1 -- не повторяющийся ?
> Не понял я вопроса. Ну да, 1 и 2 повторяются

Так с чего ты хочешь, чтобы 1 был, а 2 -- не было.
Они повторяются, оба.



Та любой из них!
Ну допустим с максимальной датой(date_path). Т.е. 2-ой
...
Рейтинг: 0 / 0
Сравнение множеств в ASE 15
    #36943978
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно двумя группировками через промежуточную таблиц
1 группировка по id_path
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select  id_path, 
          sum(lat * lat) as id1,
          sum(lat * sort_idx) as id2,
          sum(lon * lon) as id3,
          sum(lon * sort_idx) as id4 
    into #temp 
   from my_table
  group by id_path
2 группировка по id - полям
Код: plaintext
select max(id_path) from #temp group by id1, id2, id3, id4
Вычисляемые поля в первом селекте - таже самая кеш фунция, которая должна дать уникальное сочетание. Для достижения уникальности можно добавить еще полей с суммами перекрестных умножений полей, минимальным и максимальными значениями - добивайся сам.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Сравнение множеств в ASE 15
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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