aide sur une requete

La question :

Bonjour,

Pour connaître tous les clients ayant commandé en 2012 je fais :

select distinct comptesClients from VENTES where date like "2012%";

Je peux faire la même requête pour 2011 par exemple mais ce que
j'aimerais ce serait de trouver la liste des clients ayant commandé en
2011 mais pas en 2012.

Voyez-vous comment je pourrais construire ça ?

Merci pour votre temps.

Poser votre question sur le forum Programmation

Les 5 réponses :

Le 10/01/2013 15:41, val a écrit :


Pour connaître tous les clients ayant commandé en 2012 je fais :

select distinct comptesClients from VENTES where date like "2012%";

Je peux faire la même requête pour 2011 par exemple mais ce que
j'aimerais ce serait de trouver la liste des clients ayant commandé en
2011 mais pas en 2012.


select distinct comptesClients from VENTES where date like "2011%"
and not exists (select 1 from VENTES where date like "2012%");

Le 10/01/13 16:07, Patrick V a écrit :


select distinct comptesClients from VENTES where date like "2011%"
and not exists (select 1 from VENTES where date like "2012%");


ça veut dire quoi exactement le "select 1" dans ce cas ?

--
L'homme est imparfait, mais ce n'est pas étonnant
quand on pense à l'époque où il a été créé.
? Alphonse Allais

Une Bévue a écrit :


Le 10/01/13 16:07, Patrick V a écrit :


select distinct comptesClients from VENTES where date like "2011%"
and not exists (select 1 from VENTES where date like "2012%");


ça veut dire quoi exactement le "select 1" dans ce cas ?


Ca renvoie 1 à chaque fois que la where clause est vérifiée
Inutile de renvoyer une vraie valeur puisque le seul but est de
vérifier l'existence d'au moins une ligne

Patrick V a exposé le 10/01/2013 :


Le 10/01/2013 15:41, val a écrit :


Pour connaître tous les clients ayant commandé en 2012 je fais :

select distinct comptesClients from VENTES where date like "2012%";

Je peux faire la même requête pour 2011 par exemple mais ce que
j'aimerais ce serait de trouver la liste des clients ayant commandé en
2011 mais pas en 2012.


select distinct comptesClients from VENTES where date like "2011%"
and not exists (select 1 from VENTES where date like "2012%");


Je ne connaissais pas cet opérateur 'exists' et je crois qu'il va
m'être très utile à l'avenir. J'ai juste un peu changé la requête pour
obtenir ce que je voulais :

select distinct comptes as cpt from VENTES where date like "2011%" and
not exists (select 1 from VENTES where date like "2012%" and
compte=cpt);

Merci beaucoup !

Le 10/01/13 17:57, Alain Montfranc a écrit :


Ca renvoie 1 à chaque fois que la where clause est vérifiée
Inutile de renvoyer une vraie valeur puisque le seul but est de vérifier
l'existence d'au moins une ligne


ok, pigé, merci bien.

--
L'homme est imparfait, mais ce n'est pas étonnant
quand on pense à l'époque où il a été créé.
? Alphonse Allais

Poser votre question sur le forum Programmation

Questions similaires :

Requête MySQL trop lente : comment trouverd'où ça vient ?

Bonjour J'ai une requête SQL très lente sur une machine et j'aimerais savoir pourquoi. Cette requête s'exécute beaucoup plus rapidement (7-8 secondes au lieu d'1-2 minutes) sur une autre machine qui devrait être sensiblement équivalente. La requête est un peu compliquée, je ne la jette pas comme...

Requete SQL svp

Bonjour, Sous MySQL, j'ai : - une table typeoptions { id_typeoption : bigint, titre: varchar } - une table options { id_option: bigint, objet: enum( 'article', 'rubrique', 'etablissement'), id_objet: bigint, active: enum ('non', 'oui', 'rubrique') } Une option peut avoir les valeurs 'non', 'oui',...

AIDE MySQL : unique liste selon 2 requetes (jointure)

Bonjour, Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise maintenant une procedure stockée qui entraine l'écriture de requêtes à la mano. J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec...

requête sql

Bonjour, Je débute en SQL et j'essaie de former une requête trop compliquée pour moi. Voila, j'analyse une base produits et j'essaie de classer les différents produits en fonction du chiffre d'affaire qu'ils ont générés ces 5 dernières années. J'ai une seule table avec des enregistrements où l'on...

[PostgreSQL] Executer une requete sans executer les triggers

salut. bon ben tout est dans le titre. J'ai un trigger sur le ON UPDATE. sauf que parfois je modifie un enregistrement et que je suis absolument sur que l'execution du trigger est inutile. Y a t-il un moyen d'executer une requetes sans executer les trigger associé a la table ? Merci Etienne