Я пытаюсь найти доступные детали адреса из трех таблиц.
Если в таблице 1 есть детали адреса, то получить их из таблицы1
Если адрес таблицы 1 имеет нулевое значение, тогда рассмотрим таблицу2,
Если адрес таблицы 2 имеет нулевое значение, тогда рассмотрим таблицу 3, иначе отобразить адрес таблицы 1 (нулевой)
В таблице 1 есть внешние ключи, которые можно использовать для объединения таблиц 2 и 3, но онитакже может быть нулевым, и в этом случае должны рассматриваться только данные из таблицы 1.
В моем запросе я могу присоединиться к таблицам, когда внешние ключи доступны, но в случае, если они равны нулю, запрос не't work!
Я не уверен, что смогу добавить оператор' Case ', чтобы игнорировать условия' Join 'в случае, если внешние ключи равны нулю.
Может кто-нибудь помочь?
![enter image description here](https://i.stack.imgur.com/axjyr.png)
Мой запрос приведен ниже:
SELECT donor.donor_num,
CASE
--WHEN donor.addr1 IS NULL THEN paraddress.addr1
--WHEN paraddress.addr1 IS NULL THEN enrparaddr.addr1
WHEN donor.addr1 IS NULL THEN enrparaddr.addr1
ELSE donor.addr1
END AS Address1,
CASE
--WHEN donor.addr2 IS NULL THEN paraddress.addr2
--WHEN paraddress.addr2 IS NULL THEN enrparaddr.addr2
WHEN donor.addr2 IS NULL THEN enrparaddr.addr2
ELSE donor.addr2
END AS Address2
FROM donor
JOIN enrparaddr ON enrparaddr.par_code = donor.enrol_code
--JOIN paraddress ON paraddress.par_code = donor.par_code
WHERE donor_num = '17206'
См. Прилагаемое изображение для трех таблиц