It looks like you don't quite understand the various types of joins. Overall, there are 5 different join types: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSS. I'll show you an example of all 5 using these 2 tables
Tables AA and BB will only have the field ID. Table AA will have 'A', and 'B' as values for ID. Table BB will have 'B', 'C', and 'D' as values for ID.
For an INNER JOIN, only those rows with matching values are included. So the INNER join of AA and BB would be:
'B','B'
For a LEFT OUTER JOIN, every row in the left table is returned, and for those rows in the right table without a matching value, NULL is returned. So we get:
'A',NULL
'B','B'
For a RIGHT OUTER JOIN, every row in the right table is returned, and for those rows in the left table without a matching value, NULL is returned. So we get:
'B','B'
NULL,'C'
NULL,'D'
For a FULL OUTER JOIN, every row in both tables are returned. And missing values in either table are NULL. So we get:
'A',NULL
'B','B'
NULL,'C'
NULL,'D'
And finally, for a CROSS JOIN, every row in each table is returned with every row in the other table. So we get:
'A','B'
'A','C'
'A','D'
'B','B'
'B','C'
'B','D'
For the example SQL statement you gave, you're returning an INNER JOIN. As for the difference between an INNER JOIN and a CROSS JOIN, the above example should have illustrated the differences, but for an INNER JOIN you're examining the minimum number of rows and for a CROSS JOIN, you're examining the maximum possible number of rows. In general if you examine the plan for a SQL query and find out that a CROSS JOIN is being used in the plan, more often than not, you have an error in your SQL since cross joins tend to be extremely processor and I/O intensive.