Requete SQL multi criteres

Requete SQL multi criteres - SQL/NoSQL - Programmation

Marsh Posté le 13-08-2004 à 11:06:46    

Bonjour, je cherche a faire une requete SQL un peu compliquée :
 
j'ai une table regles qui contient des regles tarifaires s'appliquant selon différents criteres sur une commande.
 
Imaginons maintenant que j'ai une table produits, une table zonelivraison et une table commande
 
Je souhaiterais qu'en validant une commande, une requete puisse aller vérifier toutes les regles tarifaires applicables, selon l'exemple suivant :
 
table regles
| idregle | idproduit | idzonelivraison | nbarticles | datecmd | reduction |
|     1    |     3       |        4          |      2         |    0        |    20       |
|     2    |     3       |        0          |      0         |    0        |    30       |
 
 
comment faire pour sélectionner toutes les regles applicables ?
si j'ai une commande de 2 articles sur le produit n°3 en livraison zone 4, je voudrais arriver à sélectionner les regles 1 & 2 (la date est à 0 donc sans en tenir compte) mais également sélectionner la ligne 2 puisque j'ai le produit 3 et que la regle 2 s'applique uniquement au produit 3 (tout le reste étant à 0)
 
est ce gérable ?
 
merci


Message édité par misterpinguin le 13-08-2004 à 11:09:53
Reply

Marsh Posté le 13-08-2004 à 11:06:46   

Reply

Marsh Posté le 13-08-2004 à 17:25:23    

Quelquechose comme ça, non ?
 

Code :
  1. select * from regles
  2. where idproduit = :monidproduit
  3. and (idlivraison = :monidlivraison
  4.      or
  5.      idlivraison = 0)
  6. and (nbarticles = monnbarticles
  7.      or
  8.      nbarticles = 0)
  9. and (datecmd = madatecmd
  10.      or
  11.      datecmd = 0);

Reply

Marsh Posté le 13-08-2004 à 19:24:45    

Beegee a écrit :

Quelquechose comme ça, non ?
 

Code :
  1. select * from regles
  2. where idproduit = :monidproduit
  3. and (idlivraison = :monidlivraison
  4.      or
  5.      idlivraison = 0)
  6. and (nbarticles = monnbarticles
  7.      or
  8.      nbarticles = 0)
  9. and (datecmd = madatecmd
  10.      or
  11.      datecmd = 0);



c'est bien ce à quoi j'avais pensé, mais le pb est que j'ai donné un exemple alors que je veux faire ça sur une dizaine de criteres.
 
je vais la tester quand meme et poster le résultat

Reply

Marsh Posté le 13-08-2004 à 19:35:51    

ça a l'air de marcher  :)  
je trouvais tellement facile que je n'avais meme pas pris la peine d'essayer !
Je vais continuer à faire des tests en compliquant un peu.
merci ! ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed