PHP поиск по двум таблицам из БД - PullRequest
0 голосов
/ 23 июня 2019

Я хотел бы искать файлы по имени и после тега.

Если тег, присвоенный файлу, соответствует слову, которое вы ищете, этот файл также считается.

Iесть три таблицы:

tags
id | name

tags_files
id | id_tag | id_file

files
id | name | category

Теперь я выполняю поиск только по имени в таблице "files".

$how_many = $this->wpdb->get_var($this->wpdb->prepare("SELECT COUNT(*) FROM {$this->table_files} WHERE name LIKE %s AND category IN ($subcategories)", '%' .  $this->wpdb->esc_like($search) . '%')); 

Каждый файл имеет присвоенные теги в таблице "tags_files".

Как это решить?

=========================

При желании вы можете добавить поиск в категориюкак это:

WHERE (tags.name LIKE '%search%' OR files.name LIK '%search%' ) AND ($this->files.category IN ($subcategories))

1 Ответ

1 голос
/ 23 июня 2019
SELECT files.* FROM files
LEFT JOIN tags_files ON tags_files.id_file = files.id
LEFT JOIN tags ON tags.id = tags_files.id
WHERE tags.name LIKE '%search%' OR files.name LIK '%search%' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...