Bonjour à tous,
J'ai une fenêtre de recherche avec 7 critères de recherche possibles.
Les critères sont :
- Le numéro de produit.
- Le nom du client.
- Le numéro de téléphone du client.
- Le GSM du client.
- Le distributeur du produit.
- Le code postal du client.
- La ville du client.
Ma requête ne doit remonter que des informations du client, voici la requête générale que j'utilise:
Comme vous le constatez il y a 4 tables jointes. Ces jointures me provoquent, selon les recherches, des ralentissements importants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT DISTINCT T_clients.T_clients_ID, T_clients.T_clients_RS, T_clients.T_clients_responsable, T_clients.T_clients_prenom FROM T_clients LEFT OUTER JOIN T_villes ON T_villes.T_villes_ID = T_clients.T_clients_numVille, T_produits LEFT OUTER JOIN T_clients ON T_clients.T_clients_ID = T_produits.T_produits_numClient, T_produits INNER JOIN T_distributeurs ON T_distributeurs.T_distributeurs_ID = T_produits.T_produits_numDistributeur WHERE T_clients.T_clients_responsable LIKE '%' AND T_clients.T_clients_tel LIKE '%' AND T_clients.T_clients_GSM1 LIKE '%' AND T_villes.T_villes_cp LIKE '%' AND T_villes.T_villes_ID LIKE '%' AND T_distributeurs.T_distributeurs_ID LIKE '%' AND T_produits.T_produits_num LIKE 'R2036'
Pour éviter ces ralentissements et toutes les jointures je souhaite mettre en place une requête en fonction de chacun des critères recherche, soit 7 requêtes.
Mais ma question est :
Comment faire pour les recherche multi-critères ? peut-on créer une requête de façon dynamique en fonction des critères de recherche ?
Exemple :
Si je veux faire une recherche sur tous les clients commençant par "D" dans le département "66" :
Je n'ai pas besoin d'avoir la table "t_distributeurs" et de la table "T_produits". Le fait de les retirer me fait gagner beaucoup de temps lors de l'exécution de la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT DISTINCT T_clients.T_clients_ID, T_clients.T_clients_RS, T_clients.T_clients_responsable, T_clients.T_clients_prenom FROM T_clients LEFT OUTER JOIN T_villes ON T_villes.T_villes_ID = T_clients.T_clients_numVille WHERE T_clients.T_clients_responsable LIKE 'D%' AND T_villes.T_villes_cp LIKE '66%'
Merci à tous pour votre aide.
Partager