У меня есть таблица ORDERS из корзины покупателя. Это типичное имя клиента, адрес и т. д. Список полей. Суть в том, что корзина будет заполнять информацию о доставке в соответствующие поля (shipName, shipAddress, ShipState и т. д.), когда клиент вводит информацию о доставке, которая отличается от платежной информации. Однако, когда клиент отправляет товар себе, корзина не перемещает информацию о доставке в соответствующие поля для доставки (т. е. shipName, shipAddress, shipState). Эта информация сохраняется в полях ordName, ordAddress, ordCity и т. д., а поля, связанные с доставкой, остаются пустыми.
Таким образом, эти поля доставки будут пустыми для заказов, которые клиенты отправляют сами себе. Я использовал команды IF для перемещения ordName, ordAddr и т. д. в псевдонимы, когда информация о доставке не предоставляется, чтобы обрабатывалась информация о доставке для всех типов заказов (независимо от того, отправляет ли клиент себе или на другой адрес). Эта часть отлично работает в моем запросе ниже.
Остается одна проблема. В моей программе доставки нельзя использовать длинное название штата (например, Мичиган, Нью-Йорк и т. д.). Необходимо, чтобы штат представлял собой аббревиатуру из двух символов (например, MI, NY). У меня есть таблица поиска с именем *STATES, в которой есть сопоставление между длинным именем состояния и двухсимвольной аббревиатурой. Я пытаюсь использовать псевдоним ShipState для поиска правильного двухсимвольного имени для данного состояния. Я пытался сделать это как 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'