orders
、user_addresses
およびの 3 つのテーブルがありalternate_addresses
ます。ユーザーには常に user_address があります。オーダーには があり、これにはまたはalternate_address_id
が含まれる場合があります。alternate_address_id
NULL
今、私のクエリは次のようになります。
SELECT
IF(ISNULL(orders.alternate_address_id), a.firstname, u.firstname) AS firstname,
IF(ISNULL(orders.alternate_address_id), a.lastname, u.lastname) AS lastname
-- etc.
FROM orders
LEFT JOIN alternate_addresses a ON (
orders.alternate_address_id IS NOT NULL
AND orders.alternate_address_id = a.alternate_address_id)
LEFT JOIN user_addresses u ON (
orders.alternate_address_id IS NULL
AND orders.user_id = u.user_id)
IF(ISNULL())
最初のアドレスの後にどのアドレスを使用する必要があるかを知っているので、すべてのアドレス フィールドの一部を行うのは冗長に思えます。
これを行うためのより良い方法はありますか (テーブルのデザインを変更できません)?
ご意見ありがとうございます。