2014-11-05 41 views
-1

我有这个表:MySQL的 - 选择都哪里去数组值

ID | Product_ID | Filter_ID 
1   1     8 
2   1     9 
3   2     10 

我也有PHP数组包含过滤器进行检查:

$arr = (8,9,10); 

现在,如何确保PRODUCT_ID( 1)有$ arr中的所有过滤器?

+0

我不知道该怎么做 – 2014-11-05 03:20:04

+0

使用'SELECT * FROM table WHERE filter_id IN(“。 ($''''$ $'')')' – 2014-11-05 03:20:44

+0

您的问题与最佳答案相比较不正确 – 2014-11-05 07:55:44

回答

0

如果只希望里面有所有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); 
+0

这对我很有用,谢谢:) – 2014-11-05 03:58:55

+0

欢迎你:D – 2014-11-05 04:02:59

-1
$arr = [8, 9, 10]; 
$sql = "SELECT * FROM `Table` WHERE `Filter_ID` IN (".implode(', ', $arr).")"; 
+0

这可能会有帮助!让我检查 – 2014-11-05 03:22:14

+1

'$ arr = [8,9,10];'可能需要'$ arr = array('8','9','10');'取决于PHP版本 – 2014-11-05 03:26:03

+0

array() - 是陈旧的数组声明 – 2014-11-05 03:31:00