Original query:
SELECT *  FROM AA FULL OUTERJOIN BB on (AA.C_ID = BB.C_ID);     How do I convert the query above to make it compatible in Microsoft Access?
I am assuming:
SELECT * FROM AA FULL LEFT JOIN BB ON (AA.C_ID = BB.C_ID);   I haven't dealt with the "FULL" criteria before am I correctly converting the first query into a query compatible with Access?
The FULL OUTER JOIN keyword returns all records when there is a match in left (table1) or right (table2) table records. Tip: FULL OUTER JOIN and FULL JOIN are the same.
What is Full Outer Join in SQL? In SQL the FULL OUTER JOIN combines the results of both left and right outer joins and returns all (matched or unmatched) rows from the tables on both sides of the join clause.
Assuming there are not duplicate rows in AA and BB (i.e. all the same values), a full outer join is the equivalent of the union of a left join and a right join.
SELECT *     FROM AA         LEFT JOIN BB ON AA.C_ID = BB.C_ID UNION SELECT *     FROM AA         RIGHT JOIN BB ON AA.C_ID = BB.C_ID   If there are duplicate rows (and you want to keep them), add WHERE AA.C_ID IS NULL at the end, or some other field that is only null if there is not corresponding record from AA.
EDIT:
See a similar approach here.
It recommends the more verbose, but more performant
SELECT *     FROM AA         JOIN BB ON AA.C_ID = BB.C_ID UNION ALL SELECT *     FROM AA         LEFT JOIN BB ON AA.C_ID = BB.C_ID     WHERE BB.C_ID IS NULL UNION ALL SELECT *     FROM AA         RIGHT JOIN BB ON AA.C_ID = BB.C_ID     WHERE AA.C_ID IS NULL   However, this assumes that AA.C_ID and BB.C_ID are not null.
The more eficient and faster code:
SELECT *     FROM AA         LEFT JOIN BB ON AA.C_ID = BB.C_ID UNION ALL SELECT *     FROM AA         RIGHT JOIN BB ON AA.C_ID = BB.C_ID     WHERE AA.C_ID IS NULL 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With