Aller au contenu

Requete sql complexe en php


zimounet

Sujets conseillés

Bonjour @ tous,

Je sollicite votre aide pour écrire un requete sql en php que je n'arrive pas a écrire.

En fait, j'aurai besoin de parenthèse si ça existait, mais je ne sais meme pas si c'est possible, grosso modo ce serai un truc du genre:

SELECT * FROM table WHERE ((idcat1=$var1 OR idcat1=$var2 OR idcat1=$var3) OR (idcat2=$var1 OR idcat2=$var2 OR idcat2=$var3) OR (idcat3=$var1 OR idcat3=$var2 OR idcat3=$var3)) AND (prest=a or prest=b or prest=c)

Est ce que vous saisissez ce que je souhaite faire?

Il y a beaucoup trop de trucs a gérer, je n'y parviens vraiment pas...

Merci d'avance pour votre aide, n'hésitez pas à me signaler si il y a des choses à préciser

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @ tous,

Je sollicite votre aide pour écrire un requete sql en php que je n'arrive pas a écrire.

En fait, j'aurai besoin de parenthèse si ça existait, mais je ne sais meme pas si c'est possible, grosso modo ce serai un truc du genre:

SELECT * FROM table WHERE ((idcat1=$var1 OR idcat1=$var2 OR idcat1=$var3) OR (idcat2=$var1 OR idcat2=$var2 OR idcat2=$var3) OR (idcat3=$var1 OR idcat3=$var2 OR idcat3=$var3)) AND (prest=a or prest=b or prest=c)

Est ce que vous saisissez ce que je souhaite faire?

Il y a beaucoup trop de trucs a gérer, je n'y parviens vraiment pas...

Merci d'avance pour votre aide, n'hésitez pas à me signaler si il y a des choses à préciser

Pas trop :unsure:

Des AND et des OR c'est une table de veritée toute bete non ?

Lien vers le commentaire
Partager sur d’autres sites

arf, bah en fait, ma requete présente ce que je veux faire, en partant des meme regles de mathématiques avec les parenthèses... c'est pas simple a expliquer, mais la problématique est toute conne en fait.

Si vous voulez pour dans mon script, j'ai trois valeur: $var1 $var2 et $var3

Dans la table sur lequel je doit faire le SELECT, j'ai 3 champs différents: idcat1, idcat2 et idcat3

Je veux donc selectionner tous les enregistrements ayant pour valeur, le champs idcat1= l'une de mes trois variables, OU idcat2= une de mes trois variables OU idcat3= une de mes trois variables ET UNIQUEMENT quand au moins une des trois conditions précédente est vrai ET que presta=a OU que presta=b etc

Lien vers le commentaire
Partager sur d’autres sites

Au niveau logique ce que tu as ecrit me semble bon, maintenant au niveau SQL je laisse les autres se prononcer car ca depasse mes competences (je n'ai pas encore eu l'occasion d'utiliser des conditions un peu complexe...).

Lien vers le commentaire
Partager sur d’autres sites

il faut bien mettre entre parenthèses les expressions entre chaque condition

par exemple :

expression1 (idcat1=$var1) OR (idcat1=$var2) OR (idcat1=$var3)

ou un autre exmple :

(prest=a) or (prest=B) or (prest=c)

puis

((expression1) OR (expression2) OR (expression3)) AND (expression4)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

visiblement, SQL te renvoit une erreur et tu ne sais pas d'où elle vient... si ça peut t'aider, mets ta requête sous cette forme :

$Resultat=mysql_query($TaRequete) or die(mysql_error());

ou alors, SQL te renvoit une réponse qui ne correspond pas à ce que tu demandes, mais ça, tu ne l'as écris nulle part...

Ton erreur ne viendrait pas plutôt d'un oubli des guillement autour des different $var ou de a, b et c... S'il s'agit de chaines de caractères, ces guillemets sont nécessaires!!!

A+

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

SELECT * FROM table WHERE ((idcat1=$var1 OR idcat1=$var2 OR idcat1=$var3) OR (idcat2=$var1 OR idcat2=$var2 OR idcat2=$var3) OR (idcat3=$var1 OR idcat3=$var2 OR idcat3=$var3)) AND (prest=a or prest=b or prest=c)

Tu as une table qui contient des produits, des articles ou des services.

Tu doit aussi avoir une table catégorie.

Un des tes produits ( ou articles ou services ) peut appartenir à [1..3] categories.

Est-ce que c'est bien ça ?

Tu modélise l'association entre ta table et tes catégories à l'aide de 3 champs : idcat1, idcat2, idcat3 ?

Si c'est bien ça ( là je joue un peu à Madame Irma, je n'ai pas la structure des tables ), ton pb n'est pas dans ta requête SQL mais dans la conception de ta base de donnée.

Avec la modélisation que tu as choisi tu va galérer.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...