【发布时间】:2010-12-13 19:19:10
【问题描述】:
我有一个以这种方式设计的简单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 为空的行意味着我们还必须使用客户的发票地址进行发货。
第一个问题:这是一个足够好的设计吗,还是应该在所有nullship_address 字段中填写发票地址(即使相同)并且不要留下null。
第二个问题:保持这样的设计(即使它是糟糕的设计),我如何创建一个 SELECT 查询(如果可能的话),它总是为每一行返回一个地址:@ 987654326@ 当不是 null,否则只是 invoice_address,类似于:
SELECT CONCAT_IF_SHIP_ADDRESS_NOT_NULL_OTHERWISE_USE_ONLY_SHIP_ADDRESS(invoice_address, ship_address) AS address FROM customers;
查询 MySQL 数据库。
谢谢,
【问题讨论】:
标签: mysql sql database-design street-address invoice