Я хочу показывать публикации в соответствии с интересами (по ключевым словам) пользователей.
ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ
id | username
5 | joelsilva
ТАБЛИЦА ПУБЛИКАЦИЙ
id | publication title
8 | The best car of the year!
ТАБЛИЦА ИНТЕРЕСОВ
id | username | interest
8 | joelsilva | car
9 | joelsilva | year
Он показывает все публикации с названием автомобиля и год на главной странице.
Я пробовал это:
$pubs = mysql_query(
"SELECT *
FROM PUBLICATIONS
WHERE (interest LIKE '%".$interests."%')
ORDER BY id desc"
) or die(mysql_error());
Это работает, но только с одним типом интереса в таблице. Если добавление более одного интереса ничего не показывает.
Присоединяйтесь к публикациям и интересам по названию, содержащему интерес, и получите отдельные строки публикации. Фильтр для пользователя.
SELECT DISTINCT
p.*
FROM publications p
INNER JOIN interests i
ON p.title LIKE concat('%', i.interest, '%')
WHERE username = ?
ORDER BY p.id DESC;
(Кстати: вместо имени пользователя его идентификатор должен быть в таблице интересов. И вам, вероятно, следует взглянуть сюда, чтобы узнать, почему не следует использовать конкатенацию строк при построении запросов, а параметризованные запросы.)