(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id__dossier=t_dossier_transferer.id_dossier where t_dossier_transferer is null
devrait fonctionner
gg
JeAn-PhI a écrit :
bonjour
j'ai 2 table (t_dossier et t_dossier_transferer) et je voudrais obtenir
la liste des dossiers non transférés
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,...
from t_dossier
where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de
faire la même chose
merci
select
id_dossier
from
t_dossier left join t_dossier_transferer on
t_dossier.id__dossier=t_dossier_transferer.id_dossier
where t_dossier_transferer is null
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id__dossier=t_dossier_transferer.id_dossier where t_dossier_transferer is null
devrait fonctionner
gg
Jerome PAULIN
JeAn-PhI a écrit :
bonjour
j'ai 2 table (t_dossier et t_dossier_transferer) et je voudrais obtenir la liste des dossiers non transférés
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select t_dossier.id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id_dossier=t_dossier_transferer.id_dossier where t_dossier_transferer.id_dossier is null
devrait faire l'affaire
gg
JeAn-PhI a écrit :
bonjour
j'ai 2 table (t_dossier et t_dossier_transferer) et je voudrais obtenir
la liste des dossiers non transférés
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,...
from t_dossier
where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de
faire la même chose
merci
select
t_dossier.id_dossier
from
t_dossier left join t_dossier_transferer on
t_dossier.id_dossier=t_dossier_transferer.id_dossier
where
t_dossier_transferer.id_dossier is null
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select t_dossier.id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id_dossier=t_dossier_transferer.id_dossier where t_dossier_transferer.id_dossier is null
devrait faire l'affaire
gg
JeAn-PhI
Dans son message précédent, Jerome PAULIN a écrit :
JeAn-PhI a écrit :
bonjour
j'ai 2 table (t_dossier et t_dossier_transferer) et je voudrais obtenir la liste des dossiers non transférés
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select t_dossier.id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id_dossier=t_dossier_transferer.id_dossier where t_dossier_transferer.id_dossier is null
devrait faire l'affaire
gg
ok merci
-- Cordialement JeAn-PhI
Dans son message précédent, Jerome PAULIN a écrit :
JeAn-PhI a écrit :
bonjour
j'ai 2 table (t_dossier et t_dossier_transferer) et je voudrais obtenir la
liste des dossiers non transférés
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,...
from t_dossier
where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire
la même chose
merci
select
t_dossier.id_dossier
from
t_dossier left join t_dossier_transferer on
t_dossier.id_dossier=t_dossier_transferer.id_dossier
where
t_dossier_transferer.id_dossier is null
(je sais que ce modèle n'est pas normalisé mais ce n'est pas le but)
donc je fais :
select id_dossier,... from t_dossier where id_dossier not in (select id_dossier from t_dossier_transferer)
donc j'aimerais savoir si il existe une autre façon plus optimiser de faire la même chose
merci
select t_dossier.id_dossier from t_dossier left join t_dossier_transferer on t_dossier.id_dossier=t_dossier_transferer.id_dossier where t_dossier_transferer.id_dossier is null
devrait faire l'affaire
gg
ok merci
-- Cordialement JeAn-PhI
mat
Jerome PAULIN wrote on 21.01.2009 :
Bonjour,
J'ai fait quelques tests pour voir si cela fonctionne aussi sous WD10 que j'utilise. En principe LEFT JOIN n'existe pas dans cette version, et on utilise INNER JOIN en place. Le fichier INVOICE contient 8013 enregistrements. La requête suivante
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction ON ( Invoice.IDInvoice = Transaction.IDInvoice) WHERE Transaction.IDInvoice is Null "
trouve 17 enregistrements sans contrepartie dans TRANSACTION.
Ce résultat est confirmé par une requête "NOT IN", mais elle prend presque deux fois plus de temps.
Or, dans les tests du contraire, c'est à dire des IDInvoice qui se trouvent dans TRANSACTION cela ne marche plus.
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction ON ( Invoice.IDInvoice = Transaction.IDInvoice) "
rend 8013 enregistrements, donc la totalité du fichier, ce qui est faux.
Lorsqu'on remplace LEFT JOIN par INNER JOIN, la requête rend le résultat correct de 7096 enregistrements. On pourrait dire "c'est logique car LEFT JOIN n'estiste pas dans WD10". Or, lorsque je fais la même chose sur la première requête, celle qui cherche les enregistrements inexistants dans TRANSACTION, elle ne rend aucun enregistrement.
Donc, sous WD10 le LEFT JOIN marche mais seulement lorsqu'on TESTE "is Null". Autrement il faut utiliser INNER JOIN, mais elle prend le même temps que la requête "IN". D'autre part avec INNER JOIN tester "is Null" ne marche pas. Y a-t-il une autre solution?
Les deux requêtes "NOT IN" et "IN" fonctionnent correctement.
Mat
Jerome PAULIN wrote on 21.01.2009 :
Bonjour,
J'ai fait quelques tests pour voir si cela fonctionne aussi sous WD10
que j'utilise. En principe LEFT JOIN n'existe pas dans cette version,
et on utilise INNER JOIN en place. Le fichier INVOICE contient 8013
enregistrements. La requête suivante
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction
ON ( Invoice.IDInvoice = Transaction.IDInvoice) WHERE
Transaction.IDInvoice is Null "
trouve 17 enregistrements sans contrepartie dans TRANSACTION.
Ce résultat est confirmé par une requête "NOT IN", mais elle prend
presque deux fois plus de temps.
Or, dans les tests du contraire, c'est à dire des IDInvoice qui se
trouvent dans TRANSACTION cela ne marche plus.
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction
ON ( Invoice.IDInvoice = Transaction.IDInvoice) "
rend 8013 enregistrements, donc la totalité du fichier, ce qui est
faux.
Lorsqu'on remplace LEFT JOIN par INNER JOIN, la requête rend le
résultat correct de 7096 enregistrements. On pourrait dire "c'est
logique car LEFT JOIN n'estiste pas dans WD10". Or, lorsque je fais la
même chose sur la première requête, celle qui cherche les
enregistrements inexistants dans TRANSACTION, elle ne rend aucun
enregistrement.
Donc, sous WD10 le LEFT JOIN marche mais seulement lorsqu'on TESTE "is
Null". Autrement il faut utiliser INNER JOIN, mais elle prend le même
temps que la requête "IN". D'autre part avec INNER JOIN tester "is
Null" ne marche pas. Y a-t-il une autre solution?
Les deux requêtes "NOT IN" et "IN" fonctionnent correctement.
J'ai fait quelques tests pour voir si cela fonctionne aussi sous WD10 que j'utilise. En principe LEFT JOIN n'existe pas dans cette version, et on utilise INNER JOIN en place. Le fichier INVOICE contient 8013 enregistrements. La requête suivante
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction ON ( Invoice.IDInvoice = Transaction.IDInvoice) WHERE Transaction.IDInvoice is Null "
trouve 17 enregistrements sans contrepartie dans TRANSACTION.
Ce résultat est confirmé par une requête "NOT IN", mais elle prend presque deux fois plus de temps.
Or, dans les tests du contraire, c'est à dire des IDInvoice qui se trouvent dans TRANSACTION cela ne marche plus.
" SELECT DISTINCT Invoice.IDInvoice FROM Invoice LEFT JOIN Transaction ON ( Invoice.IDInvoice = Transaction.IDInvoice) "
rend 8013 enregistrements, donc la totalité du fichier, ce qui est faux.
Lorsqu'on remplace LEFT JOIN par INNER JOIN, la requête rend le résultat correct de 7096 enregistrements. On pourrait dire "c'est logique car LEFT JOIN n'estiste pas dans WD10". Or, lorsque je fais la même chose sur la première requête, celle qui cherche les enregistrements inexistants dans TRANSACTION, elle ne rend aucun enregistrement.
Donc, sous WD10 le LEFT JOIN marche mais seulement lorsqu'on TESTE "is Null". Autrement il faut utiliser INNER JOIN, mais elle prend le même temps que la requête "IN". D'autre part avec INNER JOIN tester "is Null" ne marche pas. Y a-t-il une autre solution?
Les deux requêtes "NOT IN" et "IN" fonctionnent correctement.