Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение данных из двух таблиц через промежуточную таблицу с аналитикой / 4 сообщений из 4, страница 1 из 1
21.11.2017, 23:22
    #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
21.11.2017, 23:47
    #39557218
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение данных из двух таблиц через промежуточную таблицу с аналитикой
Alibek B.,

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

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

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

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

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

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


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