Recherches selon plusieurs critères MYSQL

Résolu/Fermé
silicon6969 Messages postés 146 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 4 mars 2015 - 21 mai 2013 à 14:25
 Utilisateur anonyme - 22 mai 2013 à 10:03
Bonjour,
je souhaiterais effectuer une recherche selon plusieurs critères dans une base de données contenant plusieurs tables. Cependant j'hésite encore sur la façon de m'attaquer à celà. Dois-je utiliser un formulaire et filtrer selon les données renvoyer ou utiliser une fonction qui me permettra de filtrer avec plusieurs critères.

merci d'avance.


3 réponses

Utilisateur anonyme
21 mai 2013 à 15:15
salut !
tout dépend de ce que souhaite récupérer.

D'une part, le nombre d'enregistrement à un impact sur la durée de traitement, donc plus il y aura de critère plus cela risque de prendre du temps (en fonction de la taille, faire plusieurs requete peu s'avérer + rapide qu'une seule), de même, il peu aussi être plus rapide dans certains cas de filtrer des résultats dans ton code que dans ta requête.
Ensuite il faut savoir si tes critères sont stricts ou s'ils ne s'éliminent pas entre eux (par exemple tu peux ne récupérer que les données correspondant aux critères A ET B ou récupérer ceux qui correspondent à A OU B.

Donc finalement il faudrai un peu plus d'info pour t'aider précisément ^^.

naga
1
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
21 mai 2013 à 14:50
tu peux utiliser la fonction OR du SQL.
Du style:

SELECT blabla,blibli FROM foobar WHERE blabla LIKE %hihi% OR bliblib LIKE %ahha%

0
silicon6969 Messages postés 146 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 4 mars 2015 17
22 mai 2013 à 08:50
bonjour,
dans le cas ici présent je dois effectuer une recherche avec plusieurs critères (le prix d'un matériau et son poids par exemple), chacune des informations ayant sa table dans la base de donnée. Dans le cas ici présent je dois absolument effectuer avec les deux critères donc sa serait bien une ET.
0
Utilisateur anonyme
22 mai 2013 à 09:06
ok. donc tu doit identifier le lien qu'il y a entre tes tables (par exemple un identifiant de pièce) afin d'avoir l'esquisse de ta requête (peu être qu'il a déjà un existant qui affiche la liste sans filtrage? dans ce cas tu peux t'appuyer sur cette requete).

par exemple :
nous dirons que tu as 3 tables :
materiaux (ID_MAT, NOM_MAT)
poids (ID_MAT,sPOIDS)
prix (ID_MAT,sPRIX)

tu veux récupérer les infos pour un prix de 100 et un poids de 650 :

SELECT NOM_MAT , POIDS , PRIX
FROM (materiaux , poids , prix)
WHERE materiaux.ID_MAT = poids.ID_MAT
and materiaux.ID_MAT = prix.ID_MAT
and prix.sPRIX = 100 
and poids.sPOIDS = 650


ou encore

SELECT NOM_MAT , POIDS , PRIX
FROM materiaux
join poids on poids.ID_MAT = materiaux.ID_MAT 
join prix on prix.ID_MAT = materiaux.ID_MAT 
WHERE prix.sPRIX = 100 
and poids.sPOIDS = 650
0
silicon6969 Messages postés 146 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 4 mars 2015 17
22 mai 2013 à 09:56
merci beaucoup nagashima tes explications claire m'ont permis de comprendre comment je vais pouvoir faire !
0
Utilisateur anonyme
22 mai 2013 à 10:03
pas de soucis, bonne journée =)

naga
0