I was wondering if there is a way to filter rows which have a corresponding row in a different table using JOIN operation, or perhaps using any other method which does not involve sub queries.
Here is the only thing I could come up with, however it uses subqueries and I am afraid that it could become quite slow when dealing with very large tables.
SELECT * FROM `reports` as R WHERE (
SELECT COUNT(*)
FROM `report_deletes` as RD
WHERE
RD.report_id = R.id AND
RD.user_id = 1
) = 0;
Use a left join and check for NULL: