Как я могу получить более одной строки с запросом «И» в php mysql - PullRequest
0 голосов
/ 19 июня 2020
id - idProduct - idFilter
65 -    494    -    3
66 -    495    -    3
67 -    497    -    17
68 -    500    -    17
69 -    500    -    3

Как я могу получить все idProducts, у которых есть idFilter 17 И 3. В данном случае это только продукт с id - 500

Я пробую что-то вроде этого: $ query = "SELECT idProduct FROM tablename WHERE (idFilter = '3') OR (idFilter = '17') GROUP BY idProduct ";

Я знаю, что это глупо, но не знаю ни малейшего понятия?

Спасибо

1 Ответ

1 голос
/ 19 июня 2020

В случае, если вам нужно сравнить несколько значений строк в одном столбце, так что значение должно удовлетворять условию ANS.

Затем вы можете выполнить следующий трюк, чтобы добиться этого:

SELECT distinct(idProduct) as idProduct,count(*) AS total FROM  tablename 
        WHERE idFilter IN (17,3) GROUP BY idProduct  
        HAVING total = 2; 
        //Having will force result to have both 17 and 3  else 17 or 3 alone will be in the result
    

Если вы используете переменную php для указанных выше идентификаторов, вы можете попробовать следующее

$inArray = array(17,3);
$sql = "SELECT distinct(idProduct) as idProduct,count(*) AS total FROM  tablename 
        WHERE idFilter IN (".implode(',',$inArray).") GROUP BY idProduct  
        HAVING total = '".count($inArray)."'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...