Vous filtrez tc_date_transaction qui filtre toutes les valeurs nulles dans ce champ, même celles générées par la jointure externe et va donc à l'encontre de son objectif. Déplacez le filtre "tc_date_transaction ="17/06/2010"" dans la clause de jointure et cela fonctionnera.
SELECT *
FROM employee LEFT OUTER JOIN timecard
ON employee.employee_id = timecard.employee_id and tc_date_transaction = "17/06/2010";
ou écrivez
SELECT *
FROM employee LEFT OUTER JOIN timecard
ON employee.employee_id = timecard.employee_id
where (tc_date_transaction = "17/06/2010" or tc_date_transaction is null);