У меня есть простая таблица customers
, разработанная таким образом (я сообщаю только о некоторых полях, относящихся к данному вопросу):
+ ----------- + --------------- + ---------------- +
+ customer_id + invoice_address + ship_address +
+ ----------- + --------------- + ---------------- +
+ 33 + 234, Walnut Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 66, Smart Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 4, Cool Ave + 45, Dark Street +
+ ----------- + --------------- + ---------------- +
Строки с нулевым ship_address означает, что мы должны использовать счет клиентаадрес также для доставки.
1-й вопрос: это достаточно хороший дизайн, или все поля null
ship_address
должны быть заполнены адресом счета(даже если они идентичны) и не осталось null
.
2-й вопрос: Сохраняя такой дизайн (даже в случае, если он плохой), как мне создать запрос SELECT (если онвозможно), который всегда возвращает один отдельный адрес для каждой строки: ship_address
, когда НЕ null
, в противном случае просто invoice_address
, что-то вроде:
SELECT CONCAT_IF_SHIP_ADDRESS_NOT_NULL_OTHERWISE_USE_ONLY_SHIP_ADDRESS(invoice_address, ship_address) AS address FROM customers;
Запрос для БД MySQL.
Спасибо