У меня есть и ЗАКАЗ стол из корзины покупателя. Это типичное имя клиента, адрес и т. Д. Список полей. Суть в том, что корзина заполняет информацию о доставке в соответствующие поля (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'