У меня есть 2 таблицы со структурой, похожей на эту:
таблица: пользователь
поля: id, active_office_address_id (может быть 0)
таблица: user_address
поля: id, user_id, тип (дом, офис)
Пользователь может иметь «домашний» адрес (не обязательно) и несколько «офисных» адресов. У меня есть соединение, чтобы получить адрес пользователя, но я хочу, чтобы у пользователя был «домашний» адрес, чтобы получить этот адрес, а не адрес «офиса».
Итак, как я могу получить «домашний» адрес, если он существует, и только если он не существует, чтобы получить «офисный» адрес. (На самом деле запрос намного сложнее и соединение выполняется на 4-5 таблицах)
SELECT * FROM user LEFT JOIN user_address ON (user.id = address.user_id AND
(user_address.type = "home" OR user.active_office_address_id = user_address.id))
group by user.id