Хранимая процедура для получения адреса по умолчанию среди списка адресов для того же пользователя - PullRequest
0 голосов
/ 30 апреля 2020

Мой вариант использования - хранить несколько адресов для клиента и иметь возможность назначить адрес одного клиента в качестве адреса клиента по умолчанию.

У меня есть три таблицы; customer (содержит данные о клиенте), address (содержит данные об адресе) и customer_address (отображает клиентов по их адресам). В customer_address у меня есть поле is_default, которое позволяет назначать адрес в качестве адреса по умолчанию для одного клиента (используя is_default = 1).

Можно ли записать сохраненный процедура, которая возвращает адрес по умолчанию для данного клиента?

1 Ответ

0 голосов
/ 30 апреля 2020

Предполагая, что вы оставите свой дизайн базы данных как есть с полем 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;

Конечно, сохранение адреса по умолчанию в записи клиента может привести к более сложные аспекты вашего приложения, такие как добавление или удаление адресов клиенту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...