См. SQL-запрос ниже, похоже, он работает хорошо. Это позволяет мне искать записи по почтовому индексу или городу.
Пользователь вводит почтовый индекс или город из текстового поля.
Существует список почтовых индексов (BB1, BB2, BB3 и т. Д.) Из таблицы uk_postcodes
.
Если пользователь введет BB2 или BB2 XXX, он отобразит список записей магазина, которые осуществляют доставку в область BB2. (Я использую PHP, чтобы получить первую часть почтового индекса, прежде чем он перейдет в SQL-запрос)
Если пользователь введет Blackburn
, отобразится список магазинов с областью доставки по умолчанию (D.shop_id = S.shop_id AND D.postcode_id = S.postcode_id
)
$SQL = "(SELECT DISTINCT S.*, D.delivery_cost, D.postcode AS DeliveryAreaPostcode FROM shops AS S
JOIN shop_delivery_area AS D ON D.shop_id = S.shop_id
JOIN uk_postcodes AS P ON P.postcode_id = D.postcode_id
WHERE P.postcode = '$search' ORDER BY D.postcode)
UNION
(SELECT DISTINCT S.* , D.delivery_cost, D.postcode AS DeliveryAreaPostcode FROM shops AS S
JOIN shop_delivery_area AS D ON D.shop_id = S.shop_id AND D.postcode_id = S.postcode_id
JOIN uk_postcodes AS P ON P.postcode_id = D.postcode_id
WHERE S.town = '$search')";
Этот запрос SQL хорош? или что можно улучшить или уменьшить?