Rechercher : dans
Par :

[SQL] Prob opérateur logique AND OR XOR

Dernière réponse le 5 jun 2008 à 12:02:36 goldo, le 5 jun 2008 à 11:29:05 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit soucie pour une requête SQL d'ordre logique je pense.

Le but de la requête est d'établir une moyenne sur le volume de vente mensuel, c'est à dire prendre le volume vendu par tous les mois de toutes les années et d'en faire une moyenne.

SELECT avg(qteVendu) as moyenne
FROM 
            (
             SELECT sum(qte) AS qteVendu, MONTH(dateVente) as mois, YEAR(dateVente) as annee
             FROM ligneVenteThe, vente
             WHERE vente.numVente=ligneVenteThe.numVente AND ligneVenteThe.refThe='azerty'  and refMag='vdtDK'
             GROUP BY MONTH(dateVente), YEAR(dateVente) 
           )

Là il n'y a pas de problème, tout va bien.

Maintenant ce que je souhaite c'est qu'il ne prend pas en compte le mois courant de l'année courante.
Donc dans le WHERE J'essaie de placer la condition mais je n'y arrive pas.

WHERE blablabla AND (  MONTH(dateVente)<>MONTH(date())  AND YEAR(dateVente) <> YEAR(date())  )


Comment faire pour dire que l'année courante ET/ASSOCIER avec le mois courant, ne passe pas dans la requete.
Comment dire qu'il faut que les 2 conditions en même temps, l'un avec l'autre doivent être réalisés



M'auriez vous compris lol ?
Configuration: Windows Vista
Firefox 2.0.0.14

Meilleures réponses pour « [SQL] Prob opérateur logique AND OR XOR » dans :
[Emule] LowID VoirL'ID (identifiant) est un numéro d'utilisateur unique affecté par eMule en début de connexion : Une ID nulle indique que le client emule n'est connecté à aucun serveur Une ID faible ou Low ID (1 à 16 777 215) indique un utilisateur connecté...
PHP - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
SQL - Opérations ensemblistes VoirLes opérations ensemblistes Les opérations ensemblistes en SQL, sont celles définies dans l'algèbre relationnelle. Elles sont réalisées grâce aux opérateurs : UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implémenté dans...
Javascript: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

kilian, le 5 jun 2008 à 11:37:28

Salut,

Tout ce que tu veux c'est ne pas trouver mois courant et anne_courante en même temps?
C'est donc un "non(a ET b)" :-)
Ou encore un "non a OU non b"

Soit:

WHERE blablabla AND NOT(  MONTH(dateVente)=MONTH(date())  AND YEAR(dateVente) = YEAR(date())

Ou encore:
WHERE blablabla AND (  MONTH(dateVente)<>MONTH(date())  OR YEAR(dateVente) <> YEAR(date())

Répondre à kilian

2

goldo, le 5 jun 2008 à 11:45:09

Merci.
Avant que tu postes j'ai mis tout simplement un XOR sans espérer que cela marche. Mais ça marche.

WHERE blablabla AND (  MONTH(dateVente)<>MONTH(date())  XOR YEAR(dateVente) <> YEAR(date())  )


Je prends note de ta réponse killian quand même. ;-)

Répondre à goldo

3

 kilian, le 5 jun 2008 à 12:02:36

Tu vas rencontrer un soucis avec ton XOR: tu n'auras les moyennes que des mois de cette année sans le mois courant, et celle des autres années seulement pour le même mois que le mois courant.

Répondre à kilian
Collection CommentÇaMarche.net