为相关的MySql数据库表创建多选过滤系统

时间:2019-05-27 18:11:12

标签: mysql sql

我的数据库中有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_id 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

是否有更有效,更好的方法?

0 个答案:

没有答案