Your question has been answered, but from your comments I gather that you are still insecure whether you have understood the matter completely. So, I thought I'd just add another answer :-)
Let's start with the simple
FROM a, b
This is an antiquated join syntax that was replaced by explicit joins in Standard SQL-1992. With the above, you had to put the join criteria, if any, in the WHERE clause. Without join criteria in the WHERE clause this is a cross join, which you would now explicitly write as
FROM a CROSS JOIN b
This tells the reader that you purposly want all combinations of a and b (and haven't only forgotten the join criteria or deleted it mistakenly). An example is
FROM store CROSS JOIN product
Here you combine every store with every product, no matter whether the store really has the product; you simply show all possible combinations. With two stores and two products, a result could look as follows:
store product
s1 p1
s1 p2
s2 p1
s2 p2
A CROSS JOIN is something rarely needed. In above case we might want to know all store product/combinations and select a 'yes' or 'no' for every line, so we see which products a store features and which not.
In a relational database we usually deal with table's relations, however, so let's add join criteria:
FROM a, b
WHERE a.col1 = b.col2
This is an inner join, where we only look for record matches. This is now written as
FROM a
INNER JOIN b ON a.col1 = b.col2
or (omitting the optional keyword INNER
, as a join is an inner join by default):
FROM a
JOIN b ON a.col1 = b.col2
Here is an example. We have two tables containing the expenses and earnings per department and year.
FROM dept_cost
JOIN dept_gain ON dept_gain.dept_no = dept_cost.dept_no AND dept_gain.year = dept.cost.year
Lets's say the tables contain:
year dept_no total_cost
2015 d001 20000
2016 d001 25000
2016 d002 10000
and
year dept_no total_gain
2015 d001 40000
2015 d002 30000
2016 d001 50000
Then a result would be:
year dept_no total_cost total_gain
2015 d001 20000 40000
2016 d001 25000 50000
because only 2015/d001 and d001/2016 are found in both tables.
If you want to see the other data, too, you must outer join. You can outer join dept_gain to dept_cost, so as to see all costs - along with their gains if any. Or, vice versa, you outer join dept_cost to dept_gain, so as to see all gains - along with their costs if any. Or you full outer join, so as to see all data:
FROM dept_cost
FULL OUTER JOIN dept_gain ON dept_gain.dept_no = dept_cost.dept_no
AND dept_gain.year = dept.cost.year
year dept_no total_cost total_gain
2015 d001 20000 40000
2015 d002 30000
2016 d001 25000 50000
2016 d002 10000
Both the CROSS JOIN and the FULL OUTER JOIN are rarely needed. So don't worry if you don't understand them, yet. You will usually only need the INNER JOIN and sometimes the LEFT OUTER JOIN.