|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Bonjour à tous,
un petit problème qui me frustre depuis pas mal de temps. J'ai une table, TableDonnees, qui contient des données. J'ai une autre table, TableParam, qui contient des éléments présents dans TableDonnees. Par exemple, une liste de clefs primaires. J'aimerai pouvoir supprimer tous les enregistrements de TableDonnees identifiés dans TableParam. Et avec une jointure cela ne marche pas ! Je peux bien sur utiliser DFirst() ou In(select ...) mais je trouve que cela manque de clarté et en plus c'est beaucoup moins rapide qu'une jointure. Est-ce que je m'y prends mal ou on ne peut simplement pas faire cela ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
salut
un enregistrement de la table TableDonnees pourrait potentiellement apparaître plusieurs fois dans le résultat de la requête (s'il y a des doublons dans TableParam) et la suppression n'est alors plus possible pour pouvoir supprimer (je crois que c'est pareil pour modifier), il faut garantir que la requête ne renverra un enregistrement de la table qu'une seule fois essaye donc pour cela d'ajouter un index sans doublon sur le (les) champ(s) de la table TableParam utilisé(s) pour la jointure (j'imagine qu'il n'y a pas de doublons dans cette table?)
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|
|
00
|
|
|
#3 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Il n'y a pas de doublon dans TableParam mais, oui, il peut y avoir plusieurs enregistrements de TableDonnees qui corresponde à un de TableParam. Par exemple, je souhaite supprimer tous les enregistrements dont la période est égale à 2010-12.
Noter que les effacements ne se font que dans TableDonnees. TableParam sert simplement à choisir ceux qu'on veut éliminer. Je ne cherche pas à résoudre un cas particulier j'aimerai un truc qui marche tout le temps si c'est possible. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#4 | |||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonsoir,
Citation:
Code sql :
tu as effectivement le message "impossible de supprimer..." Dans ce cas, on peut glisser un DISTINCTROW: Code sql :
|
|||||
|
10
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour à tous,
Je me suis permis de noter ce fil (Excellent) car c'est un sujet récurrent. En effet, la phrase clé du sujet a été clairement rédigée par Arkham46 : Citation:
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
10
|
|
|
#6 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Merci F-leb, je vais essayer ton
Code sql :
À priori toutes mes lignes sont déjà distinctes donc je devrais avoir le résultat attendu. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Merci ça marche parfaitement.
Je vais pouvoir supprimer mes requêtes paramétrées. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2008 Messages : 63 ![]() |
Bonjour,
Je me permet de réagir sur ce sujet, puisque j'ai une question sur le même problème : Concernant la solution de f-leb - Je n'ai pas bien compris, cette solution peux-elle s'appliquer alors qu'il y a des doublons dans la table 'TableDonnees'? - Qu'en est-il du code SQL si les tables ont des jointures sur plusieurs champs? (ps : je suis un novice absolu en SQL Merci, |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
'soir,
personne t'as prévenu ? DISTINCTROW ou l'exemple parfait de l'absurdité d'Access ! ![]() ![]() pour info, on peut très bien revenir à du SQL standard et obtenir la même chose en écrivant: Code sql :
ouf, Access connait Exists ![]() Sinon tu devrais ouvrir une nouvelle discussion et donner plus de détails, ce n'est apparemment pas le même problème. |
||
|
10
|
|
|
#10 |
|
Membre confirmé
![]() Administrateur de base de données Inscription : mars 2006 Messages : 285 ![]() |
Bonjour et Merci f_leb pour ce nouvel éclairage !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com