La différence entre les 2 requêtes, pour récupérer les 307 lignes qu'il y a dans dcf qui ne sont pas dans cla avec les conditions que j'utilise pour le moment.
PS : désolé pour ton pseudo, j'ai corrigé dans mon dernier post.
Bonjour,
Mais pourquoi vouloir faire un minus / not exists ou que sais-je encore ?
Ceci ne répond-t-il pas à votre besoin ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT cla.id_Cart, cla.num_line FROM cla inner join dcf on dcf.idcart = cla.z_id_cart AND dcf.linequote = cla.num_line WHERE cla.date1 BETWEEN '20110301' AND '20110331' AND cla.flag2 <> 1 AND cla.id_item = 'multi-produits' AND cla.id_item = 'price List' AND cla.id_item = 'simu';
Cette requête me retourne 0 résultats.
En fait, je fais peut être fausse route depuis le début. Je reprends :
Cette requête :
me ramène 3207 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT DISTINCT id_Domain, id_Cart, num_version, num_line, count(*) FROM cla, dcf where date1 between '20110301' and '20110331' AND flag2 = 1 AND id_item <> 'multi-produits' AND id_item <> 'price List' AND id_item <> 'simu' AND dcf.idcart = cla.z_id_cart AND dcf.linequote = cla.num_line GROUP BY id_domain, id_cart, num_version, num_line;
Celle ci, sur la deuxième table :
me ramène 3514 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT DISTINCT idcart, linequote, numberofevo, count(*) FROM dcf, cla where dateoffer between '2011/03/01' and '2011/03/31' and dcf.idcart = cla.z_id_cart AND dcf.linequote = cla.num_line GROUP BY idcart, linequote, numberofevo;
Le problème étant que normalement cla contient plus de lignes que dcf hors ici c'est l'inverse.
Et je cherche donc à savoir comment trouver ces lignes qui sont dans dcf et pas dans cla.
Désolé si je vous ai induit en erreurs auparavant.
Mais est-ce que votre comparaison est pertinante ?
Votre 1ere requête comporte différente colonne par rapport à la 2eme requête. Pour moi vous comparez des choux et des patates là.
(au passage utilisez à la fois group by et distinct ne sert à rien, c'est soit l'un soit l'autre).
De plus vu votre réponse j'en déduis que vos restrictions (mise à par celle sur les dates) ne servent à rien dans ce cas là, passons.
Donc combien de ligne retourne cette requête ?
Et celle-ci ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT DISTINCT z_id_cart, num_line FROM cla, dcf WHERE date1 BETWEEN '20110301' AND '20110331' AND flag2 = 1 AND id_item <> 'multi-produits' AND id_item <> 'price List' AND id_item <> 'simu' AND dcf.idcart = cla.z_id_cart AND dcf.linequote = cla.num_line
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT DISTINCT idcart, linequote FROM dcf, cla WHERE dateoffer BETWEEN '2011/03/01' AND '2011/03/31' AND dcf.idcart = cla.z_id_cart AND dcf.linequote = cla.num_line;
3207 pour la première et 3514 pour la seconde.
oki,
Donc ceci ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT DISTINCT dcf.idcart, dcf.linequote FROM dcf inner join cla on dcf.idcart = cla.z_id_cart and dcf.linequote = cla.num_line WHERE dateoffer BETWEEN '2011/03/01' AND '2011/03/31' and not exists (select null from cla b WHERE b.date1 BETWEEN '20110301' AND '20110331' AND b.flag2 = 1 AND b.id_item <> 'multi-produits' AND b.id_item <> 'price List' AND b.id_item <> 'simu' AND dcf.idcart = b..z_id_cart AND dcf.linequote = b..num_line);
792 lignes.
Mais j'ai du mal à voir à quoi correspond ce chiffre alors. ça veut dire qu'il y a 792 lignes présentes dans dcf et non dans cla ?
Alors quid des requêtes précédentes qui montraient une différence de 307 ?
Si date1, dateoffer sont bien de type date il faut réécrire :
en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 date1 BETWEEN '20110301' AND '20110331' dateoffer BETWEEN '2011/03/01' AND '2011/03/31'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 date1 BETWEEN to_date('20110301','YYYYMMDD') AND to_date('20110331','YYYYMMDD') dateoffer BETWEEN to_date('2011/03/01','YYYY/MM/DD') AND to_date('2011/03/31','YYYY/MM/DD')
Ils sont en VARCHAR2 mais je n'ai pas de problèmes pour les dates, j'obtiens bien les infos entre le 01/03/2011 et le 30/01/2011.
Oui celà veut dire, qu'avec ces restrictions 792 lignes de dcf ne sont pas référencées dans cla.
Notez bien que je dit "avec ces restrictions".
On a vu qu'apparement vos critères sur le flag et id_item ne sont pas pertinant...il vous reste donc la colonne date.
Ensuite ces deux comptages ne compte pas les même choses donc qu'ils soient différents ne me choque pas. (pour comprendre ça reprennez l'exemple de lola qui était assez bien fait)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager