atis2345
@atis2345
PHP developer

Как вытянуть одинаковые поля с базы?

SELECT *
FROM `file`
WHERE file.id = 2
&& file.cat = 1
&& file.cat = 2

Это таблица категорий, мне нужно вытянуть файлы где категории равны 1, 2, 10 и т.д
Оператор IN вытянет все где 1 || 2 || 10, т.е. он мне не подходит.
Кто что подскажет?
В гугле не нашел!
  • Вопрос задан
  • 204 просмотра
Решения вопроса 2
sofcase
@sofcase
Веб-разработчик
У вас список категорий записан в поле через запятую, или связь файл <-> категория в отдельной таблице?
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для общего случая:
SELECT `t1`.`id` 
    FROM (SELECT DISTINCT `id` FROM `table` WHERE `cat` = 1) AS `t1`
    JOIN (SELECT DISTINCT `id` FROM `table` WHERE `cat` = 2) AS `t2` ON `t2`.`id` = `t1`.`id`
    JOIN (SELECT DISTINCT `id` FROM `table` WHERE `cat` = 10) AS `t3` ON `t3`.`id` = `t1`.`id`


Для случая, когда пары (`id`, `cat`) уникальные:
SELECT `id` 
    FROM `table`
    WHERE `cat` IN (1, 2, 10)
    GROUP BY `id`
    HAVING COUNT(`id`) >= 3
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
evgeniy2194
@evgeniy2194
PHP, js developer
IN (1,2,10) вытенет все категории 1,2,10 если таковы есть в базе
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы