MySQL查询;及;使用多个复选框搜索表单并选择菜单
我有一张桌子:MySQL查询;及;使用多个复选框搜索表单并选择菜单,mysql,search,checkbox,Mysql,Search,Checkbox,我有一张桌子: item_id | property_id | value | ================================ 1 | 100 | 1 | 1 | 101 | 1 | 1 | 102 | 0 | 2 | 100 | 1 | 2 | 101 | 1 | 2 |
item_id | property_id | value |
================================
1 | 100 | 1 |
1 | 101 | 1 |
1 | 102 | 0 |
2 | 100 | 1 |
2 | 101 | 1 |
2 | 102 | 1 |
2 | 120 | black |
3 | 100 | 1 |
3 | 101 | 0 |
3 | 102 | 1 |
4 | 121 | big |
...
我想通过带有多个复选框和选择菜单的表单执行“和”搜索(每个复选框和选择菜单的名称类似于“property_id”)
示例:
SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 2
SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 2
但它只适用于复选框和值0或1。我无法用选择菜单实现它(示例2或3)
我希望这能解释我想做什么。
提前谢谢 对查询的更改最少:
SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
OR property_id = 120
AND value = 'black'
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 3 ;
这相当于:
SELECT item_id
FROM yourtable
WHERE property_id = 100 AND value = 1
OR property_id = 101 AND value = 1
OR property_id = 120 AND value = 'black'
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 3 ;
我不是最好的SQL编写者,但您是否尝试过“WHERE property_id=100101”?这是一个常见的问题,请查看右侧的建议。我记得它来来往往,但肯定还有很多其他的。