私は顧客のショッピングカートからのORDERSテーブルを持っています。これは典型的な顧客名、住所などのフィールドのリストです。ねじれは、顧客が請求情報とは異なる出荷情報を入力すると、カートが出荷情報を適切なフィールド (shipName、shipAddress、ShipState など) に入力することです。ただし、顧客が自分自身に発送する場合、カートは配送情報を適切な配送フィールド (shipName、shipAddress、shipState) に移動しません。この情報を ordName、ordAddress、ordCity などのフィールドに保持し、配送関連のフィールドを空のままにします。
したがって、これらの配送フィールドは、顧客が自分自身に配送する注文では空になります。配送情報が提供されていない場合は、IF コマンドを使用して ordName、ordAddr などをエイリアス名に移動し、すべての注文タイプ (顧客が自分自身に配送するか、別の住所に配送するか) の配送情報が処理されるようにしました。その部分は、以下のクエリで正常に機能しています。
1つの問題が残っています。私の配送プログラムでは、長い州名 (ミシガン、ニューヨークなど) を使用できません。州は 2 文字の省略形 (例: MI、NY) である必要があります。長い州名と 2 文字の省略形の間のマッピングを持つ* STATESという名前のルックアップ テーブルがあります。ShipState エイリアスを使用して、特定の州の正しい 2 文字の名前を検索しようとしています。これを JOIN として実行しようとしましたが、エラーが発生し続けます。使用していた結合を削除し、現在正しく機能するコードのみを表示していますが、州の省略形のマッピングは行いません。誰か助けてくれませんか?
SELECT
orders.ordDate AS `Date`,
orders.ordID AS Order_ID,
orders.ordEmail AS Email,
IF(ordShipName = ' ', ordName, ordShipName) AS Name,
IF(ordShipAddress = ' ', ordAddress, ordShipAddress) AS Address_1,
IF(ordShipAddress2 = ' ', ordAddress2, ordShipAddress2) AS Address_2,
IF(ordShipCity = ' ', ordCity, ordShipCity) AS City,
IF(ordShipState = ' ', ordState, ordShipState) AS ShipState,
IF(ordShipZip = ' ', ordZip, ordShipZip) AS Postal,
IF(ordShipCountry = ' ', ordCountry, ordShipCountry) AS Country,
IF(ordShipPhone = ' ', ordPhone, ordShipPhone) AS Phone,
FROM
orders
WHERE
orders.ordID > 21700
HAVING
Country = 'United States of America'