I am looking at the following link Left Join
If left join uses all elements from table 1 and doesn't care about table 2, why not just write:
SELECT table1.column_name(s)
FROM table1
instead of writing
SELECT table1.column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
It isn't that one cares about the values in TABLE1 and, as you write, doesn't care about TABLE2. It is that one cares about the values in TABLE1 and also about the values in TABLE2 if they exist.
Suppose you want a report of employees and their managers. You wouldn't want to exclude the president of your company simply because he doesn't have a manager. So, you would write it as a LEFT OUTER JOIN.
SELECT e.employee_name, m.employee_name manager_name
FROM employees e
LEFT JOIN employees m ON m.employee_id = e.manager_id
That way, you will get a row with your president's name and a NULL manager name for the president. If you had written it as an INNER join, you wouldn't have gotten a row for the president at all.
A LEFT JOIN on another table without a WHERE clause is indeed quite unnessairy, when only columns from the first table are needed.
In fact, it could return more rows than expected.
For example:
First some sample data:
Table1:
Id Text1 SomeKey
1 Tralala 10
2 Joehoe 20
3 Trololo 30
Table2:
Id SomeKey Text2
1 10 Blah
2 20 Bleh
3 20 Blergh
A query only on Table1 would return 3 rows.
But a query with a left join on SomeKey would return 4 rows:
select t1.Text1
from Table1 t1
left join Table2 t2 on (t1.SomeKey = t2.SomeKey)
returns:
Text1
-------
Tralala
Joehoe
Joehoe
Trololo
A common reason why one would do such a left join, without selecting fields from the joined table, is to find records in Table1 that don't have a match in Table2. Or use criteria based on Table2 fields.
select t1.Text1, t1.SomeKey
from Table1 t1
left join Table2 t2 on (t1.SomeKey = t2.SomeKey)
where t2.Id is null;
returns:
Text1 SomeKey
-------- -------
Trololo 30
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