Joins allow you to limit the number of rows returned by your query. It is very much recommended to add a join clause to your query if your query references data from 2 or more tables. If tables in a query aren't joined to one another, either directly or indirectly, your database engine doesn't know which records are associated with which, so it displays every combination of records (called a "cross-product" or "Cartesian product") between the two tables. Therefore, if each table had 10 records in it, the query's results will contain 100 records (10X10). It also means the query might take a long time to run and ultimately might produce less meaningful results. Two most common join types inner joins and outer joins are supported by Instant Report.
An inner join between two tables, retrieves only the rows for which the join column on both tables have identical values. In practical terms, this is usually the column which serves as primary key and foreign key of both tables.
A left outer join between two tables (supported by Instant Report), retrieves all the rows of an inner join (above), as well as rows from the right table that do not have a match on the left. A null row (row with null values) is generated for the left table for each row of the right table that does not have a match on the left.
To add a join, click on the Join button from the Visual Query Builder dialog, the Join dialog box opens, then: