Я думаю, что я близок к решению, но еще не совсем там.У меня есть две таблицы, которые я хочу объединить по заданному идентификатору, если он существует, но перенести на другой столбец в качестве условия объединения, если этот идентификатор не существует.
Что-то вроде:
T1:
session, ID, path
1001, 1, homepage
1001, NULL, about
T2:
ID, path, type
1, homepage, A
2, about, Z
С желаемым результатом:
session, ID, path, type
1001, 1, homepage, A
1001, 2, about, Z
Я пробовал это с:
select * from t1 inner join t2
on (t1.id = t2.id) or (t1.path = t2.path)
Ноэто приводит к неожиданным дубликатам.Я хочу сделать что-то вроде
select * from t1 inner join t2
on coalesce(t1.id, t1.path) = t2.id
Но это не будет работать правильно, поскольку путь не будет сопоставлен с идентификатором в другой таблице.
Есть какие-нибудь мысли или предложения?