Dans Microsoft Access, j'ai une requête uniSelectedContacts et une table possibles.Analyser à la volée lors de l'exécution d'une requête dans MS Access
Disons que dans ce je possibles:
Smith,John
Dough,John B
Ward,Jane Karon
Eggert,Samantha R
Dans uniSelectedContacts je ceci:
Smith,John A 1552 1st Ave
Dough,John 1111 2st Ave
Ward,Jane K 2222 3st Ave
Eggert,Samantha Rachel 3333 1st Ave
Je veux trouver où prénom et le nom sont identifiables. Cependant, en raison de la variation de l'initiale du milieu, s'il n'y a pas d'initiale du milieu dans les possibles, je veux prendre en compte toutes les instances du nom et du prénom de uniSelectedContacts en utilisant INNER JOIN. Si les possibles ont une initiale (prénom), indépendamment de son initiale ou de son nom, je veux prendre en compte les enregistrements où le nom et le prénom de uniSelectedContacts et de possibles sont identiques et où la première lettre du milieu initial (nom) de uniSelectedContacts correspond à la première lettre de l'initiale du milieu (nom) des possibles. Ainsi, dans l'exemple ci-dessus, il doit être retourné:
Smith,John 1552 1st Ave
Dough,John B 1111 2st Ave
Ward,Jane Karon 2222 3st Ave
Eggert,Samantha R 3333 1st Ave
La requête ci-dessous est rapide et je veux conserver la vitesse, mais il sautera tous les enregistrements ci-dessus (en raison des différences initiales (prénom) :
SELECT possibles.fullname,
uniSelectedContacts.addresses,
uniSelectedContacts.cities,
uniSelectedContacts.us_states_and_canada,
uniSelectedContacts.zip_codes INTO PrepareForDuplicateCheck
FROM uniSelectedContacts INNER JOIN possibles ON uniSelectedContacts.TheName = possibles.fullname;
pour tenter de répondre à la question ci-dessus, j'ai ceci:.
SELECT possibles.fullname,
uniSelectedContacts.addresses,
uniSelectedContacts.cities,
uniSelectedContacts.us_states_and_canada,
uniSelectedContacts.zip_codes,
possibles.[firstname] AS Expr1,
possibles.[lastname] AS Expr2 INTO PrepareForDuplicateCheck
FROM uniSelectedContacts INNER JOIN possibles ON uniSelectedContacts.TheName = possibles.fullname
WHERE (((possibles.firstname)=Left([fullname],InStr([fullname],",")-1))
AND ((possibles.lastname)=Mid([fullname],InStrRev([fullname],",")+1)));
étiquette ci-dessus « Entrée Paramètre Valeur possibles.firstname » message, mais je ne suis pas non plus Je suis sûr que la logique sous-jacente de la requête produira les résultats que j'attends.
Merci pour la réponse.
Merci pour la réponse. Après 40 minutes, j'ai dû forcer la fermeture de l'application car cette requête était toujours en cours d'exécution. Est-il possible de faire une condition qui ne prendra pas plus de 5 minutes? Par exemple: si possible initial initial n'est pas présent puis ripper toutes les initiales de uniSelectedContacts et utiliser la jointure interne pour renvoyer toutes les correspondances par [nom], [prénom] sinon si l'initiale du milieu est présente puis l'associer uniSelectedContacts utilisant la jointure interne [nom de famille], [prénom] [initiale du milieu]. – JohnMerlino
Que diriez-vous d'exécuter une "make table" pour sélectionner toutes les correspondances "faciles", suivi par quelque chose de similaire à ce qui précède, en excluant le contenu de la "make table", comme une requête Ajouter? Est-ce que ce costume? – Fionnuala
Donc, s'il y a un total de 1 million d'enregistrements et si les correspondances faciles renvoient 200 enregistrements, alors la requête d'ajout doit-elle encore parcourir 999 800 enregistrements? – JohnMerlino