У меня есть таблица 'PR', которая имеет определенный TraceID, а другая таблица с именем 'BA' имеет 'PAYMENT_ID' и (иногда) значение TraceID, которое я должен извлечь из столбца "MISC", чтобы затем соответствовать BAи PR Trace_ID.
Теперь некоторые записи в BA не имеют TraceID после извлечения, НО мне все еще нужно, чтобы эти записи отображались в виде строк.
Таблица PR:
TraceID
178000
178001
178002
178003
таблица BA
PAYMENT_ID, MISC
100, AAA/TraceID=178000
101, BBB/TraceID=178001
102, Ref
103, CCC/TraceID=178002
104, Ref2
105, CCC/TraceID=178003
мой вывод должен быть:
TraceID, PAYMENT_ID
178000, 100
178001, 101
NULL, 102
178002, 103
NULL, 104
и т. Д.
Я использую этот запрос:
select * from
(select TraceID from PR) PR
left join
(select
PAYMENT_ID , if (locate('TraceId=',MISC)>0,SUBSTRING_INDEX(MISC,'TraceId=',-1),'') as traceID from BankingActivity ) BA
on PR.TraceID = BA.traceID
Я только получаю PR строки с совпадающим TraceID в BA.
Теперь, как мне изменить запрос, чтобы получить все записи PR и соответствующие им PAYMENT_ID из BA (имеющие одинаковый TraceID), но также и все строки PAYMENT_ID из BA без соответствующего TraceID?
Iдумаю, у меня должен быть своего рода UNION, а затем присоединиться, но все мои попытки потерпели неудачу
спасибо за ваши предложения.