Гость
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Дублирование записей LEFT JOIN / 2 сообщений из 2, страница 1 из 1
27.11.2020, 14:08
    #40022769
bob_roman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дублирование записей LEFT JOIN
СУБД Impala
Добрый день.
Есть две таблицы:
Первая: activity_report - активности пользователей:
PK - id пользователя
event_time - время события на ПК
... - в этой табличке 5 млн. записей

и вторая: v_calls - телефонные звонки пользователя
pk - id пользователя
begintime, endtime - время начала и окончания телефонного звонка.
... в этой табличке 100 тыс. записей.

Надо выбрать все записи из первой таблицы, исключая те, в которых время события на ПК пересекалось по времени с телефонным звонком этого же пользователя.
Запрос:
SELECT * FROM activity_record AS ar
LEFT JOIN v_calls AS vc ON ar.pk=vc.pk AND ar.event_time NOT BETWEEN vc.begintime and vc.endtime
возвращает 62 млн записей, т.е. работает некорректно, получается он формирует декартово произведение таблиц по полю pk, запписи из первой таблицы входят в выборку несколько раз.

Уникальных ключей в таблицах нет.

Как исправить запрос?

Спасибо!
...
Рейтинг: 0 / 0
27.11.2020, 15:02
    #40022790
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дублирование записей LEFT JOIN
Убрать outer join, фильтровать по not exists.
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Дублирование записей LEFT JOIN / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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