Recherches selon plusieurs critères MYSQL

Résolu
silicon6969 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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
 
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   Statut Membre Dernière intervention   96
 
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   Statut Membre Dernière intervention   17
 
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
 
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   Statut Membre Dernière intervention   17
 
merci beaucoup nagashima tes explications claire m'ont permis de comprendre comment je vais pouvoir faire !
0
Utilisateur anonyme
 
pas de soucis, bonne journée =)

naga
0