je sens que je vais poser une question de débutant posée 10000 fois, mais en
cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL
:
je souhaite selectionner les enregistrements d'une table qui n'ont aucune
correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une
jointure interne :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj = b.record_id)
cela me renvoie 167 lignes
mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj <> b.record_id)
cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je
comprends bien, les 2 syntaxes que je propose ne me renvoie que les
enregistrements qui ont au moins une non-correspondance, mais pas ceux qui
n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance
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
Frédéric D
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie de ne mettre qu'un champ non clé dans la selection : --> select distinct b.record_id, b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) me renvoie 207 lignes --> select distinct b.record_id, b.long_name from editorial b where b.record_id not in (select a.id_obj from marketprint1.dbo.objects a) me renvoie 301 lignes et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" a écrit dans le message de news:
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais
en
cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en
SQL
: je souhaite selectionner les enregistrements d'une table qui n'ont aucune correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une jointure interne : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) cela me renvoie 167 lignes mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj <> b.record_id) cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je comprends bien, les 2 syntaxes que je propose ne me renvoie que les enregistrements qui ont au moins une non-correspondance, mais pas ceux qui n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci
d'avance
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie
de ne mettre qu'un champ non clé dans la selection :
--> select distinct b.record_id, b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj = b.record_id)
me renvoie 207 lignes
--> select distinct b.record_id, b.long_name from editorial b where
b.record_id not in (select a.id_obj from marketprint1.dbo.objects a)
me renvoie 301 lignes
et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des
spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec
lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere
table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" <frederic.dumusois@etocomm.fr> a écrit dans le message de
news:utuQQT0gDHA.3616@TK2MSFTNGP11.phx.gbl...
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais
en
cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en
SQL
:
je souhaite selectionner les enregistrements d'une table qui n'ont aucune
correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une
jointure interne :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj = b.record_id)
cela me renvoie 167 lignes
mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj <> b.record_id)
cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je
comprends bien, les 2 syntaxes que je propose ne me renvoie que les
enregistrements qui ont au moins une non-correspondance, mais pas ceux qui
n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie de ne mettre qu'un champ non clé dans la selection : --> select distinct b.record_id, b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) me renvoie 207 lignes --> select distinct b.record_id, b.long_name from editorial b where b.record_id not in (select a.id_obj from marketprint1.dbo.objects a) me renvoie 301 lignes et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" a écrit dans le message de news:
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais
en
cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en
SQL
: je souhaite selectionner les enregistrements d'une table qui n'ont aucune correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une jointure interne : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) cela me renvoie 167 lignes mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj <> b.record_id) cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je comprends bien, les 2 syntaxes que je propose ne me renvoie que les enregistrements qui ont au moins une non-correspondance, mais pas ceux qui n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci
d'avance
bruno reiter [MVP]
select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is null
br
"Frédéric D" wrote in message news:
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie de ne mettre qu'un champ non clé dans la selection : --> select distinct b.record_id, b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) me renvoie 207 lignes --> select distinct b.record_id, b.long_name from editorial b where b.record_id not in (select a.id_obj from marketprint1.dbo.objects a) me renvoie 301 lignes et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" a écrit dans le message de news: > Bonjour > > je sens que je vais poser une question de débutant posée 10000 fois, mais en > cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL > : > je souhaite selectionner les enregistrements d'une table qui n'ont aucune > correspondance dans une autre table. > > Je sais remonter les lignes qui ont une correspondance exacte avec une > jointure interne : > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on (a.id_obj = b.record_id) > cela me renvoie 167 lignes > mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on (a.id_obj <> b.record_id) > cela me renvoie 432 lignes > > donc au total 432+167 = 599 lignes > > problème : dans ma table editorial, je n'ai que 432 lignes. donc si je > comprends bien, les 2 syntaxes que je propose ne me renvoie que les > enregistrements qui ont au moins une non-correspondance, mais pas ceux qui > n'en ont aucune. > > Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance > >
select t1.c1
from t1 left join t2
on t1.c1 = t2.c1
where t2.c1 is null
br
"Frédéric D" <frederic.dumusois@etocomm.fr> wrote in message
news:uEBZss0gDHA.3272@tk2msftngp13.phx.gbl...
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie
de ne mettre qu'un champ non clé dans la selection :
--> select distinct b.record_id, b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj = b.record_id)
me renvoie 207 lignes
--> select distinct b.record_id, b.long_name from editorial b where
b.record_id not in (select a.id_obj from marketprint1.dbo.objects a)
me renvoie 301 lignes
et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des
spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec
lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere
table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" <frederic.dumusois@etocomm.fr> a écrit dans le message de
news:utuQQT0gDHA.3616@TK2MSFTNGP11.phx.gbl...
> Bonjour
>
> je sens que je vais poser une question de débutant posée 10000 fois, mais
en
> cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en
SQL
> :
> je souhaite selectionner les enregistrements d'une table qui n'ont aucune
> correspondance dans une autre table.
>
> Je sais remonter les lignes qui ont une correspondance exacte avec une
> jointure interne :
> select distinct b.long_name from editorial b inner join
> marketprint1.dbo.objects a on (a.id_obj = b.record_id)
> cela me renvoie 167 lignes
> mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire :
> select distinct b.long_name from editorial b inner join
> marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou
> select distinct b.long_name from editorial b inner join
> marketprint1.dbo.objects a on (a.id_obj <> b.record_id)
> cela me renvoie 432 lignes
>
> donc au total 432+167 = 599 lignes
>
> problème : dans ma table editorial, je n'ai que 432 lignes. donc si je
> comprends bien, les 2 syntaxes que je propose ne me renvoie que les
> enregistrements qui ont au moins une non-correspondance, mais pas ceux qui
> n'en ont aucune.
>
> Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci
d'avance
>
>
select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is null
br
"Frédéric D" wrote in message news:
heu je crois que j'ai la réponse, et en plus je crois que c'est une connerie de ne mettre qu'un champ non clé dans la selection : --> select distinct b.record_id, b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) me renvoie 207 lignes --> select distinct b.record_id, b.long_name from editorial b where b.record_id not in (select a.id_obj from marketprint1.dbo.objects a) me renvoie 301 lignes et enfin select count(*) from editorial b me renvoie 508 lignes
Est ce mieux comme ça ? Il me semble, mais je préfère vérifier avec des spécialistes. Ma question est : Est ce que la syntaxe de ma 2e requète (avec lle not in et la sous requète) me renvoie bien tous les tuples de la 1ere table n'ayant aucune correspondance dans la 2e ?
"Frédéric D" a écrit dans le message de news: > Bonjour > > je sens que je vais poser une question de débutant posée 10000 fois, mais en > cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL > : > je souhaite selectionner les enregistrements d'une table qui n'ont aucune > correspondance dans une autre table. > > Je sais remonter les lignes qui ont une correspondance exacte avec une > jointure interne : > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on (a.id_obj = b.record_id) > cela me renvoie 167 lignes > mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou > select distinct b.long_name from editorial b inner join > marketprint1.dbo.objects a on (a.id_obj <> b.record_id) > cela me renvoie 432 lignes > > donc au total 432+167 = 599 lignes > > problème : dans ma table editorial, je n'ai que 432 lignes. donc si je > comprends bien, les 2 syntaxes que je propose ne me renvoie que les > enregistrements qui ont au moins une non-correspondance, mais pas ceux qui > n'en ont aucune. > > Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance > >
Fred BROUARD
la réponse généraliste : http://sqlpro.developpez.com/SQL_AZ_4.html#ENSEMBLEexcept
A +
Frédéric D a écrit:
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais en cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL : je souhaite selectionner les enregistrements d'une table qui n'ont aucune correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une jointure interne : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) cela me renvoie 167 lignes mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj <> b.record_id) cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je comprends bien, les 2 syntaxes que je propose ne me renvoie que les enregistrements qui ont au moins une non-correspondance, mais pas ceux qui n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
la réponse généraliste :
http://sqlpro.developpez.com/SQL_AZ_4.html#ENSEMBLEexcept
A +
Frédéric D a écrit:
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais en
cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL
:
je souhaite selectionner les enregistrements d'une table qui n'ont aucune
correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une
jointure interne :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj = b.record_id)
cela me renvoie 167 lignes
mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire :
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou
select distinct b.long_name from editorial b inner join
marketprint1.dbo.objects a on (a.id_obj <> b.record_id)
cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je
comprends bien, les 2 syntaxes que je propose ne me renvoie que les
enregistrements qui ont au moins une non-correspondance, mais pas ceux qui
n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
la réponse généraliste : http://sqlpro.developpez.com/SQL_AZ_4.html#ENSEMBLEexcept
A +
Frédéric D a écrit:
Bonjour
je sens que je vais poser une question de débutant posée 10000 fois, mais en cherchant, je n'ai pas trouvé, et cela dépasse mes pauvres capacités en SQL : je souhaite selectionner les enregistrements d'une table qui n'ont aucune correspondance dans une autre table.
Je sais remonter les lignes qui ont une correspondance exacte avec une jointure interne : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj = b.record_id) cela me renvoie 167 lignes mais pour trouver ceux qui n'en ont aucune je suis tenté d'écrire : select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on NOT (a.id_obj = b.record_id) ou select distinct b.long_name from editorial b inner join marketprint1.dbo.objects a on (a.id_obj <> b.record_id) cela me renvoie 432 lignes
donc au total 432+167 = 599 lignes
problème : dans ma table editorial, je n'ai que 432 lignes. donc si je comprends bien, les 2 syntaxes que je propose ne me renvoie que les enregistrements qui ont au moins une non-correspondance, mais pas ceux qui n'en ont aucune.
Je ne vois pas comment faire. Quelqu'un saurait il m'aider ? Merci d'avance
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************