SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.09.2014 20:12:57

dm_laz
Участник
Зарегистрирован: 13.09.2014
Сообщений: 2

Запрос на выборку по нескольким значениям одного id

Здравствуйте!

Очень нужна помощь в составлении следующего запроса:

Есть одна таблица:
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 не решила.

Весь интернет облазил - ни одного дельного совета так и не нашел. Буду признателен за помощь.

Неактивен

 

#2 13.09.2014 20:29:17

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Запрос на выборку по нескольким значениям одного id

Например, так:

Пункт 1:

SELECT DISTINCT article_id FROM table WHERE category_id IN (30,31);


Пункт 3:
SELECT DISTINCT article_id FROM table WHERE article_id NOT IN (SELECT article_id FROM table WHERE category_id IN (30,31));

Неактивен

 

#3 13.09.2014 20:41:52

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Запрос на выборку по нескольким значениям одного id

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);


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 14.09.2014 18:07:46

dm_laz
Участник
Зарегистрирован: 13.09.2014
Сообщений: 2

Re: Запрос на выборку по нескольким значениям одного id

Спасибо за помощь! Способы rgbeast, вроде, нормально работают.

Неактивен

 

#5 14.09.2014 18:18:11

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Запрос на выборку по нескольким значениям одного id

Хмм, а мой третий запрос ненормально работает? smile


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson