With the example you gave use this if you are looking for only the clients that have a value in each table:
Code:
SELECT Table1.ID, Table1.Name, Table1.[Last Name], Table1.Office, Table1.Gender, Table2.[E-mail], Table2.Telephone
FROM Table1 INNER JOIN Table2 ON (Table1.[Last Name] = Table2.[Last Name]) AND (Table1.Name = Table2.Name);
If you want to see all the values in table1 and whether or not they have a value in table2 use this:
Code:
SELECT Table1.ID, Table1.Name, Table1.[Last Name], Table1.Office, Table1.Gender, Table2.[E-mail], Table2.Telephone
FROM Table1 LEFT JOIN Table2 ON (Table1.[Last Name] = Table2.[Last Name]) AND (Table1.Name = Table2.Name);
If you want to see all the values in table2 and whether or not they have a value in table 2 you'd use this:
Code:
SELECT Table1.ID, Table2.Name, Table2.[Last Name], Table1.Office, Table1.Gender, Table2.[E-mail], Table2.Telephone
FROM Table1 RIGHT JOIN Table2 ON (Table1.[Last Name] = Table2.[Last Name]) AND (Table1.Name = Table2.Name);
However I want to point out a couple of things before you get far in your design. Never used reserved words in your database object names (NAME is a reserved word). Also stay away from using spaces and special characters (#, $, %) other than the underscore (_) in your object names (field names, table names, query names, etc) they will only cause you grief as you go along.
Lastly, what you really should have in your table 2 is the ID field from Table1 instead of the first/last name combination. Performing queries on two tables where the data can change (let's say through marriage the surname changes you will no longer have a match)