J'ai 4 tableaux - contrôles, risques, processus et règlements. Ils ont chacun des code> code> des instances communes des numéros d'identification. Par exemple (ID1 existe sur les 4 tables). Le problème est que, sous chaque table, le nombre d'instances de chaque identifiant varie (pour EX, ID1 existe 5 fois dans des contrôles, 3 fois dans des risques, 0 dans les processus et une fois dans la réglementation).
J'ai besoin de Le code ci-dessous fonctionne jusqu'à la ligne 3, mais lorsque j'ajoute la ligne 4, il donne Moi une "table résultante non autorisée à avoir plus d'un champ d'auto-numérisation" Erreur p> rejoindre code> toutes ces tables afin qu'elles soient toutes jointes par numéro d'identification p>
3 Réponses :
MS Access nécessite des parenthèses supplémentaires pour plusieurs jointures:
SELECT * FROM ((Controls LEFT JOIN Processes_Risks ON Processes_Risks.TO_PRC_ID = Controls.TO_PRC_ID ) LEFT JOIN Issues ON Issues.TO_PRC_ID = Controls.TO_PRC_ID ) LEFT JOIN Regulations ON . . .
Où mettais-je les paranthèses si je veux ajouter le 3ème joindre "Règlement de jointure à gauche sur la réglementation.Te_prc_id = contrôle.to_prc_id"
Vous avez deux ou plusieurs table avec le même nom de colonne alors essayez d'utiliser un nom de colonne qualifié complet dans SELECT
SELECT c.TO_PRC_ID, p.TO_PRC_ID, r1.TO_PRC_ID, r2.TO_PRC_ID FROM Controls c LEFT JOIN Processes ON p p.TO_PRC_ID = c.TO_PRC_ID LEFT JOIN Risks r1 ON r1.TO_PRC_ID = c.TO_PRC_ID LEFT JOIN Regulations r2 ON r2.TO_PRC_ID = c.TO_PRC_ID
Il y a deux problèmes différents ici. Un problème consiste à obtenir la bonne syntaxe pour rejoindre quatre tables. L'autre problème est le message d'erreur "Table résultante non autorisé à avoir plus d'un champ Autonumber".
Je n'ai pas de copie des tables qui sont jointes, mais je soupçonne que plus d'un d'entre eux a un champ d'auto-numérique en elle. Il s'agit d'un champ qui génère automatiquement un numéro d'enregistrement lorsqu'un nouvel enregistrement est ajouté à une table. Étant donné que la jointure gauche inclut tous les champs de toutes les tables, il comprendra éventuellement deux champs d'auto-numérisation différents. MS Access ne peut pas faire face à cette situation. Il cesse de le casse une erreur. P>
Le moyen difficile de faire face à la suppression d'un champ Autonumber à partir d'une jointure consiste à répertorier tous les autres champs. Donc, au lieu de p> oit aurait besoin de coder p> pour éliminer le champ de problème. P> < P> Si les tables ont de nombreux champs, cela devient fastidieux au code. Une alternative consiste à copier une table dans une table temporaire, déposez le champ Autonumber à partir de la copie et utilisez la copie au lieu de l'original dans la jointure. Qu'il s'agisse d'une bonne ou d'une bonne idée dépend des circonstances, telles que la taille des tables, quelle fréquence cela devra-t-il être fait et s'il existe un bon moyen de nettoyer les tables temporaires ultérieurement. P> < / p>