Но тогда придётся поддерживать сразу 2-3 таблицы, так как в tasks_done у меня много нужной информации хранится и я просто не могу избавиться от неё. Так же я не уверен, что скорость очень сильно уменьшится, если там будет один NOT IN, а не два.
@Isis а зачем мне объединять таблицы? Или Вы предлагаете сделать что-то вроде
SELECT `id`, `name`, `status`, `price`
FROM `tasks`
LEFT OUTER JOIN tasks_hide ON tasks_hide.task_id = tasks.id AND tasks_hide.user_id = 5
WHERE tasks_hide.task_id IS NULL .........
У меня там time, user_id_vk и много такой информации, которая не важна при запросе и лишь добавить лишние строки в примеры.
Смысл они имеют, ибо, повторюсь, список заданий для всех юзеров один, при этом каждый юзер может выполнить/скрыть задание ИМЕННО для себя, а не для всех юзеров вообще.
Я же ответил voff, что это решение по подходит.
>Нет, тут список заданий один для всех и каждый юзер может выполнить/скрыть задание, после чего ему его не нужно показывать. А насчёт статуса - сейчас так и есть, в принципе (те случаи, когда задание уже не нужно показывать вообще никому)
Список заданий один для всех, но каждый юзер может скрыть задание именно для одного себя, поэтому используются отдельные таблицы tasks_done и tasks_hide.
Нет, тут список заданий один для всех и каждый юзер может выполнить/скрыть задание, после чего ему его не нужно показывать.
А насчёт статуса - сейчас так и есть, в принципе (те случаи, когда задание уже не нужно показывать вообще никому)