aide sur une requete

Le
val
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick V
Le #25127682
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%");
Une Bévue
Le #25127842
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
Alain Montfranc
Le #25128002
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
val
Le #25128672
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 !
Une Bévue
Le #25128762
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
Publicité
Poster une réponse
Anonyme