У меня 2 таблицы со структурой, аналогичной с этим:SQL - LEFT JOIN несколько условий - Приоритет
стол: пользователь
полей: идентификатор, active_office_address_id (это может быть 0)
таблица: user_address
поля: идентификатор, 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
Функция COALESCE поможет, предполагая, что MySQL поддерживает его. –
@ morandi3. , , Вы хотите, чтобы все адреса офиса или только один? –
Мне нужен только один. – morandi3