Discussion:
aide sur une requete
(trop ancien pour répondre)
val
2013-01-10 14:41:22 UTC
Permalink
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.
Patrick V
2013-01-10 15:07:18 UTC
Permalink
Post by val
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
2013-01-10 16:06:10 UTC
Permalink
Post by Patrick V
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
2013-01-10 16:57:26 UTC
Permalink
Post by Une Bévue
Post by Patrick V
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
Une Bévue
2013-01-10 22:48:24 UTC
Permalink
Post by Alain Montfranc
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
val
2013-01-10 21:58:11 UTC
Permalink
Post by Patrick V
Post by val
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 !
Continuer la lecture sur narkive:
Loading...