Предполагая, что вы оставите свой дизайн базы данных как есть с полем is_default
в таблице customer_address
, запрос на возврат адреса по умолчанию может выглядеть примерно так, как показано ниже. Было бы тривиально превратить этот запрос в хранимую процедуру (единственным необходимым параметром был бы идентификатор клиента, для которого вы sh вернули бы его целевой адрес):
SELECT a.*
FROM customer c
JOIN customer_address ca ON ca.customer_id = c.id
JOIN address a ON a.id = ca.address_id
WHERE ca.is_default = 1;
Если вы измените ваша база данных для хранения идентификатора адреса по умолчанию в записи customer
, где, возможно, и должно быть, запрос упрощен:
SELECT a.*
FROM customer c
JOIN address a ON a.id = c.default_address_id;
Конечно, сохранение адреса по умолчанию в записи клиента может привести к более сложные аспекты вашего приложения, такие как добавление или удаление адресов клиенту.