Voir la requête SQL ci-dessous, il semble bien fonctionner. Cela me permet de rechercher le disque via le code postal ou la ville.Comment améliorer la requête SQL
Type d'utilisateur dans le code postal ou la ville d'une zone de texte.
Il existe une liste de codes postaux (BB1, BB2, BB3, etc.) du tableau uk_postcodes
.
Si l'utilisateur tape BB2 ou BB2 XXX, il affichera alors une liste des enregistrements de la boutique qui font la livraison dans la zone BB2. (J'utilise PHP pour obtenir la première partie du code postal avant de passer en requête SQL)
Si le type d'utilisateur dans Blackburn
il affichera la liste des magasins avec zone de livraison par défaut (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')";
Est cette requête SQL est-elle bonne? ou ce qui peut être amélioré ou le rendre plus petit?