我有这个表:MySQL的 - 选择都哪里去数组值
ID | Product_ID | Filter_ID
1 1 8
2 1 9
3 2 10
我也有PHP数组包含过滤器进行检查:
$arr = (8,9,10);
现在,如何确保PRODUCT_ID( 1)有$ arr中的所有过滤器?
我有这个表:MySQL的 - 选择都哪里去数组值
ID | Product_ID | Filter_ID
1 1 8
2 1 9
3 2 10
我也有PHP数组包含过滤器进行检查:
$arr = (8,9,10);
现在,如何确保PRODUCT_ID( 1)有$ arr中的所有过滤器?
如果只希望里面有所有3个filter_ids那些PRODUCT_ID,试试这个:
$sql = "SELECT COUNT(*) AS total, Product_ID FROM `test`.`test` WHERE Filter_ID IN (".implode(', ', $arr).") GROUP BY Product_ID HAVING total >= ". sizeof($arr);
http://sqlfiddle.com/#!2/e949f/7/0
@edit
如果你只需要知道,如果具体的Product_ID都有3个Filter_IDS:
$sql = "SELECT COUNT(*) AS total, Product_ID FROM `test`.`test` WHERE Filter_ID IN (".implode(', ', $arr).") and Product_ID = 1 GROUP BY Product_ID HAVING total >= ". sizeof($arr);
这对我很有用,谢谢:) – 2014-11-05 03:58:55
欢迎你:D – 2014-11-05 04:02:59
$arr = [8, 9, 10];
$sql = "SELECT * FROM `Table` WHERE `Filter_ID` IN (".implode(', ', $arr).")";
这可能会有帮助!让我检查 – 2014-11-05 03:22:14
'$ arr = [8,9,10];'可能需要'$ arr = array('8','9','10');'取决于PHP版本 – 2014-11-05 03:26:03
array() - 是陈旧的数组声明 – 2014-11-05 03:31:00
我不知道该怎么做 – 2014-11-05 03:20:04
使用'SELECT * FROM table WHERE filter_id IN(“。 ($''''$ $'')')' – 2014-11-05 03:20:44
您的问题与最佳答案相比较不正确 – 2014-11-05 07:55:44