I have these tables:
calls: rows [ 'created_at', 'user_id']
users: rows ['id', 'username']
And I need to get all user without calls from date: How can I get it? Or what way is better and why?
I know three ways:
first:
SELECT id
FROM users
WHERE id NOT IN (SELECT user_id FROM calls where calls.created_at >= date)
second(I think it is not right, but I am not sure):
SELECT id
FROM users
LEFT OUTER JOIN calls
ON calls.user_id = users.id
WHERE calls.created_at <=>= date AND calls.user_id ISNULL
last:
SELECT id
FROM users
WHERE id NOT IN (
SELECT user_id
FROM calls
INNER JOIN users AS call_users
ON call_users.id = users.id
WHERE calls.created_at >= date
DB: PostgreSQL