Reputation: 139
I have this query
select delivery_first_week_repo.type, delivery_first_week_repo.from_sale, delivery_week_repo.from_sale
from delivery_first_week_repo
LEFT JOIN delivery_week_repo on delivery_first_week_repo.type = delivery_week_repo.type
where delivery_first_week_repo.week_day = 'Tuesday'
and delivery_week_repo.week_day = 'Tuesday'
In delivery_first_week_repo
there are some strings with type which is not in second table. But they are not displayed upon request.
Upvotes: 0
Views: 24
Reputation: 781068
When there's no matching row in the second table, the columns from the second table will be null in the join. So delivery_week_repo.week_day = 'Tuesday'
will never be true for those rows.
Conditions on the second table should be put into the ON
clause, not the WHERE
clause.
select delivery_first_week_repo.type, delivery_first_week_repo.from_sale, delivery_week_repo.from_sale
from delivery_first_week_repo
LEFT JOIN delivery_week_repo on delivery_first_week_repo.type = delivery_week_repo.type
and delivery_week_repo.week_day = 'Tuesday'
where delivery_first_week_repo.week_day = 'Tuesday'
Upvotes: 1
Reputation: 1381
That is because of the LEFT JOIN type.
using inner join will goive you the matching results
select delivery_first_week_repo.type,
delivery_first_week_repo.from_sale, delivery_week_repo.from_sale
from delivery_first_week_repo
INNER JOIN delivery_week_repo on delivery_first_week_repo.type =
delivery_week_repo.type
where delivery_first_week_repo.week_day = 'Tuesday'
and delivery_week_repo.week_day = 'Tuesday'
Upvotes: 0