id | user_id | item_id | ans
------------------------------
1 | 1 | 5 | .....
------------------------------
2 | 1 | 2 | .....
------------------------------
3 | 2 | 3 | .....
------------------------------
4 | 2 | 4 | .....
------------------------------
5 | 3 | 2 | .....
------------------------------
6 | 4 | 2 | .....
Нужно выводить те поля, в которых для item_id засветился наш пользователь
Если я пользователь с id = 1, то из таблицы я имел дело с item_id = 5 и 2.
Следовательно, мне нужны поля под id = 1, 2, 5, 6.
С item_id = 3 и 4 пользователь пока не сталкивался, значит они ему не нужны
Самый простой вариант, это выбирать всё, а потом отсеивать в цикле по типу
SELECT id FROM ans WHERE user_id = $user_id AND item_id = $item_id LIMIT 1
Если id есть, значит пользователь сталкивался с этим итемом и работаем с строкой. Если id нет, значит пользователь не сталкивался с этим итемом и мы пропускаем данную строку и переходим к следующей
По-моему, мой вариант тяжеловат, потому что ожидается большое количество строк в данной таблице.
Как можно это ускорить?
_____________
Идеальной защиты не существует...