Bonjour,
Je voudrais lister les client qui n'ont pas faits de dons, =E0 partir
d'une table CLIADR (qui contient tous les clients) et d'une table DONS
(qui ne contient que les clients qui ont fait un don)
Pour cela j'ex=E9cute cette requ=EAte :
SELECT ALL A.NUM_CLI_NO
FROM SCH_DWH.CA_CLIAD A
WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A,
SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO =3D B.NUM_CLI_NO)
C'est basique, et pourant ca ne fonctionne pas : j'ai un r=E9sultat vide
alors que j'ai bien des clients qui n'apparaissent pas dans la table
dons ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian
Bonjour,
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
Bonjour, Je voudrais lister les client qui n'ont pas faits de dons, à partir d'une table CLIADR (qui contient tous les clients) et d'une table DONS (qui ne contient que les clients qui ont fait un don) Pour cela j'exécute cette requête : SELECT ALL A.NUM_CLI_NO FROM SCH_DWH.CA_CLIAD A WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A, SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO)
C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide alors que j'ai bien des clients qui n'apparaissent pas dans la table dons ...
Bonjour,
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
Bonjour,
Je voudrais lister les client qui n'ont pas faits de dons, à partir
d'une table CLIADR (qui contient tous les clients) et d'une table DONS
(qui ne contient que les clients qui ont fait un don)
Pour cela j'exécute cette requête :
SELECT ALL A.NUM_CLI_NO
FROM SCH_DWH.CA_CLIAD A
WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A,
SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO)
C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide
alors que j'ai bien des clients qui n'apparaissent pas dans la table
dons ...
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
Bonjour, Je voudrais lister les client qui n'ont pas faits de dons, à partir d'une table CLIADR (qui contient tous les clients) et d'une table DONS (qui ne contient que les clients qui ont fait un don) Pour cela j'exécute cette requête : SELECT ALL A.NUM_CLI_NO FROM SCH_DWH.CA_CLIAD A WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A, SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO)
C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide alors que j'ai bien des clients qui n'apparaissent pas dans la table dons ...
izme75000
Effectivement, j'ai le bon résultat avec ca : SELECT A.NUM_CLI_NO FROM SCH_DWH.CA_CLIAD A LEFT OUTER JOIN SCH_DWH.CA_DON M ON A.NUM_CLI_NO = M.NUM_CLI_NO GROUP BY A.NUM_CLI_NO HAVING COUNT(M.NUM_CLI_NO) = 0
Merci Christian ! Mais ca reste bizarre que le not exists ne réponde pas à ce besoin....
Christian a écrit :
Bonjour,
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
> Bonjour, > Je voudrais lister les client qui n'ont pas faits de dons, à partir > d'une table CLIADR (qui contient tous les clients) et d'une table DONS > (qui ne contient que les clients qui ont fait un don) > Pour cela j'exécute cette requête : > SELECT ALL A.NUM_CLI_NO > FROM SCH_DWH.CA_CLIAD A > WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A, > SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO) > > C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide > alors que j'ai bien des clients qui n'apparaissent pas dans la table > dons ... > >
Effectivement, j'ai le bon résultat avec ca :
SELECT A.NUM_CLI_NO
FROM SCH_DWH.CA_CLIAD A
LEFT OUTER JOIN SCH_DWH.CA_DON M
ON A.NUM_CLI_NO = M.NUM_CLI_NO
GROUP BY A.NUM_CLI_NO
HAVING COUNT(M.NUM_CLI_NO) = 0
Merci Christian !
Mais ca reste bizarre que le not exists ne réponde pas à ce
besoin....
Christian a écrit :
Bonjour,
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
> Bonjour,
> Je voudrais lister les client qui n'ont pas faits de dons, à partir
> d'une table CLIADR (qui contient tous les clients) et d'une table DONS
> (qui ne contient que les clients qui ont fait un don)
> Pour cela j'exécute cette requête :
> SELECT ALL A.NUM_CLI_NO
> FROM SCH_DWH.CA_CLIAD A
> WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A,
> SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO)
>
> C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide
> alors que j'ai bien des clients qui n'apparaissent pas dans la table
> dons ...
>
>
Effectivement, j'ai le bon résultat avec ca : SELECT A.NUM_CLI_NO FROM SCH_DWH.CA_CLIAD A LEFT OUTER JOIN SCH_DWH.CA_DON M ON A.NUM_CLI_NO = M.NUM_CLI_NO GROUP BY A.NUM_CLI_NO HAVING COUNT(M.NUM_CLI_NO) = 0
Merci Christian ! Mais ca reste bizarre que le not exists ne réponde pas à ce besoin....
Christian a écrit :
Bonjour,
Essayez plutôt avec un LEFT OUTER JOIN where (B.NUM_CLI_NO is null)
Christian
"izme75000" a écrit :
> Bonjour, > Je voudrais lister les client qui n'ont pas faits de dons, à partir > d'une table CLIADR (qui contient tous les clients) et d'une table DONS > (qui ne contient que les clients qui ont fait un don) > Pour cela j'exécute cette requête : > SELECT ALL A.NUM_CLI_NO > FROM SCH_DWH.CA_CLIAD A > WHERE NOT EXISTS (SELECT DISTINCT * FROM SCH_DWH.CA_CLIAD A, > SCH_DWH.CA_DON B WHERE A.NUM_CLI_NO = B.NUM_CLI_NO) > > C'est basique, et pourant ca ne fonctionne pas : j'ai un résultat vide > alors que j'ai bien des clients qui n'apparaissent pas dans la table > dons ... > >