2010-07-29 10 views
0

J'utilise Access 2007 pour créer une requête SQL pour joindre deux tables. J'étais capable de faire cela mais ensuite je n'ai pas les rangées où les colonnes de la deuxième table sont NULL; J'ai juste les lignes où il y a des informations dans la deuxième table qui correspond. J'ai essayé de faire un LEFT JOIN mais Access n'a pas aimé ça. Au lieu de cela, j'essaye de créer un meilleur ajout de 'joint/on' à ma requête (voir ci-dessous) mais maintenant j'obtiens une "erreur de syntaxe dans la clause FROM". Avez-vous des idées sur ce que je fais de mal?SQL dans Access 2007 - Erreur de syntaxe

SELECT * 
FROM dbo_table1 AS t1 
JOIN dbo_table2 AS t2 
ON (
    (t1.id = t2.id) // where the two ids match so the info in table 2 match with table 1 
    OR 
    ((SELECT COUNT(*) FROM dbo_table2 AS t3 WHERE t1.id = t3.id)=0) // there is no match but I want the row with NULL for the values from the second table 
    ); 

Répondre

0

Si vous voulez que toutes les lignes de dbo_table1, si oui ou non il y a une ligne correspondante dans dbo_table2, utilisez LEFT JOIN. L'accès doit accepter celui-ci:

SELECT * 
FROM 
    dbo_table1 AS t1 
    LEFT JOIN dbo_table2 AS t2 
    ON t1.id = t2.id; 
0

Vous pouvez avoir une jointure externe/croix avec une instruction WHERE (a.id = b.id ou b.id est nulle).

Ou un UNION, le premier étant tout a.id = b.id, le second où b.id est nul.

(En fonction de vos besoins exacts)