powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
4 сообщений из 4, страница 1 из 1
Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
    #39557213
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно объединить данные из разных источников.
Есть основная таблица RES (id, code, title, ...).
Есть "сырая" (необработанная) таблица из другого источника данных SRC (title, ...).
Нужно добавить в RES отсутствующие данные SRC. Но критерии соответствия сложные, title могут совпадать, а могут и не совпадать.
К таблице RES есть вспомогательная таблица ALIAS (id, title, start, stop), в которой для каждой записи RES.id приводится список возможных вариантов title. У каждого варианта есть срок действия, задаваемый периодом start...stop.
Соответственно при объединении данных SRC.title нужно сравнивать не только с RES.title, но и с ALIAS.title.
У меня получилось примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
select SRC.title
, ...
, RES.code
, RES.id
from SRC
join ALIAS on (ALIAS.title = SRC.title and ALIAS.start <= now() and ALIAS.stop > now())
join RES on (RES.id = ALIAS.id)


В целом я получаю нужный результат.
В теории альтернативные варианты должны быть уникальны и давать только одну строку.
Но на самом деле по разным причинам возможно дублирование, и тогда для одной записи SRC может быть возвращено более одной строки соответствующей RES.
В этом случае мне нужно взять тот RES.id, у которого соответствующий ALIAS.START наиболее поздний.
То есть мне нужны аналитические функции.
Но из документации никак не могу понять, как мне это сделать.
Не поделитесь готовым примером для этой задачи?
...
Рейтинг: 0 / 0
Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
    #39557218
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

...в МУСКЛ нет аналитических функций,
но есть т.н. переменные, которые по функционалу
напоминают переменные цикла (курсова)...

...если взять (детерминировано-) отсортированому
датасет, то "МУСКЛ переменые" можно задать до входа
в "курсор", менять их значения на каждом рекорде и
иметь значения на выходе.

етими перемеными можно ссимулировать лаг/лид,
роунамбер, ранк и денс_ранк, топ-Н в группах и
даже слайдинг виндоу / ренже....

пример того что вам нужно -- посмотрите ФАК
"выборки первой/последней записи в группах"
...
Рейтинг: 0 / 0
Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
    #39557221
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...уточню...

....переменые и аналитически функции
находятся в другом ФАК-е 7489069

...однако вашу задачу (найти последнюю запись в групе) можно решить и без аналитике
как показано в етом ФАК-е 7543220
...
Рейтинг: 0 / 0
Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
    #39557322
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, теперь понятно.
Попробую сделать через подзапросы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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