Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Очень нужна помощь в составлении следующего запроса:
Есть одна таблица:
article_id|category_id|Value
1 |30 |На главной
1 |31 |Избранная статья
1 |32 |/article1.html
2 |30 |На главной
2 |32 |/article2.html
3 |31 |Избранная статья
3 |32 |/article3.html
Вопросы:
1) Как сделать выборку только article_id с category_id = 30 (или 31)
2) Как сделать выборку только article_id с category_id = 30 и 31
2) Как сделать выборку только article_id с category_id != 30 и 31
Этот топик http://sqlinfo.ru/forum/viewtopic.php?id=4198&p=1 прочитал. Понял, как можно сделать п.2:
SELECT article_id, COUNT(*) AS c FROM table WHERE category_id IN (30,31) GROUP BY 1 HAVING c = 2. Но замена IN на NOT IN пункт 3 не решила.
Весь интернет облазил - ни одного дельного совета так и не нашел. Буду признателен за помощь.
Неактивен
Например, так:
Пункт 1:
Неактивен
1) SELECT DISTINCT `article_id` FROM `t` WHERE `category_id` IN (30,31);
2) должен работать приведенный Вами
3) Попробуйте такой вариант:
SELECT `article_id` FROM `t` GROUP BY `article_id` HAVING ( sum( if(`category_id`=30,1,0)) = 0 ) AND ( sum( if(`category_id`=31,1,0)) = 0);
Неактивен
Спасибо за помощь! Способы rgbeast, вроде, нормально работают.
Неактивен
Хмм, а мой третий запрос ненормально работает?
Неактивен