Заранее благодарим за просмотр этого вопроса. У меня проблемы с получением запроса на возврат полных результатов.
Существует три таблицы: call_data, call_details, employee
Ни одна из таблиц не имеет первичных ключей.
Я запускаю с call_data и join call_details с достаточным количеством спецификаторов, чтобы предотвратить дублирование.
join call_detail as call_detail
on call_data.callid = call_detail.callid
AND call_detail.call_date between (call_data.segstart_d - interval '1' day) and (call_data.segstart_d + interval '1' day)
AND call_detail.segment = call_data.segment
Затем я присоединяю таблицу сотрудников к таблице call_data на основе ключа сотрудника
join EMP as ANS
ON ans.avayaid = call_data.anslogin
AND call_data.segstart_d between ans.startdate and ans.enddate
Это дает 213 строк со всеми заполненными полями. Без дублирования
Когда я добавляю левое соединение из той же таблицы сотрудников, для которого был переведен вызов
left join EMP as TRANS_FROM
ON Trans_FROM.avayaid = call_data.origlogin
AND call_data.segstart_d between Trans_from.startdate and trans_from.enddate
, я получаю лишь несколько полей trans_from. Если я поменяю местами отвеченные и перенесенные из типов соединения, тогда все перенесенные из сотрудника данные будут заполнены, но в той же горстке вызовов ответ будет дан по полям. Что дает?
Первоначально я написал это как кучу левых соединений.