Создание системы фильтрации множественного выбора для связанных таблиц базы данных MySql - PullRequest
0 голосов
/ 27 мая 2019

В моей базе данных есть 2 таблицы.

Таблица 1 = wp_bibliography, хранит информацию о журнальных статьях

+------------+---------+
|  post_id   |  title  |
+------------+---------+
| 1          | Nature  |
| 2          | Science |
| 3          | Neuron  |
+------------+---------+

Таблица 2 = wp_term_relationships, хранит различные термины тегов

+------------+---------+
|  object_id |  tag_id |
+------------+---------+
| 1          | 106     |
| 2          | 108     |
| 3          | 106     |
+------------+---------+

Post_id и object_id связаны между собой.

Я хотел бы установить флажок множественного выбора, чтобы я мог возвращать результаты для 108 или 106 или для обоих.Например, если я проверю 106 и 108, у меня будут возвращены post_ids 1,2,3, если я просто выберу 106, у меня будут возвращены post_ids 1 & 3, и если я выберу 108, у меня просто будет возвращен post_id 2

<div class="list-group-item checkbox">
 <label><input type="checkbox" value="106" >106</label>
 <label><input type="checkbox" value="108" >108</label>
</div>

Запрос, который выполняется при отправке (и работает), выглядит следующим образом, но его необходимо сделать динамическим (что я могу сделать), пример ниже, если пользователь выбрал и 106, и 108.

SELECT * 
FROM wp_bibliography x 
JOIN wp_term_relationships y 
ON y.object_id = x.post_id 
WHERE y.term_taxonomy_id IN(106,108) 
GROUP BY post_id HAVING COUNT(*) = 2

Мой вопрос, это лучший способ сделать то, что я хочу?Обратите внимание, что мои флажки с несколькими вариантами выбора, приведенные выше, будут иметь до 20 значений, например,

HAVING COUNT(*) = 20

Есть ли более эффективный и лучший способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...