SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 20.09.2011 19:34:48

vadik88
Участник
Зарегистрирован: 20.09.2011
Сообщений: 3

Помогите с запросом

Давно не работал с sql запросами, всю голову сломал. Проблема такая, есть таблица:
| t      |
|p | f  |
|1 | 4  |
|1 | 7  |
|1 | 14|
|2 | 17|
|2 | 44|
|2 |67|
|2 |72|
|3 |75|
|3 |78|
|3 |83|
|3| 87|
|3| 95|

необходимо выбрать p, где f = 17, f=44,   f=72 одним запросом.
Если было бы так:
| t            |
|p|f1|f2|f3|
|1|4|7|14|
то все понятно

select p from t where f1='17' and f2='44' and f3='72'

А как быть в моем случае?
Заранее спасибо!

Неактивен

 

#2 20.09.2011 20:13:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с запросом

select p from t where f=17 or f=44 or f=72 group by p having count(p)=3;

Неактивен

 

#3 20.09.2011 20:28:06

vadik88
Участник
Зарегистрирован: 20.09.2011
Сообщений: 3

Re: Помогите с запросом

Спасибо за ответ, vasya!

vasya написал:

select p from t where f=17 or f=44 or f=72 group by p having count(p)=3;

Не совсем то, что мне нужно. В таблице t хранятся параметры для проекта. Параметров может быть сколько угодно и мне нужно выбрать проект соответствующий запрашиваемым параметрам.
Подойдем с другой стороны. У меня получилась конструкция:

select `p` from `t` where `f`='17' and  `p` = (select `p` from `t` where `f`='44') and `p` = (select `p` from `t` where `f`='72') group by `p`

Но она может выглядеть и так:
select `p` from `t` where `f`='17' and  `p` = (select `p` from `t` where `f`='44') and `p` = (select `p` from `t` where `f`='72') and `p` = (select `p` from `t` where `f`='94') and `p` = (select `p` from `t` where `f`='142') and `p` = (select `p` from `t` where `f`='256')  group by `p`

Конструкция не работает, так как в ответ подзапрос дает не единственный результат, а несколько ответов.
Как ее оптимизировать не пойму.
Еще раз спасибо.

Неактивен

 

#4 20.09.2011 20:38:24

vadik88
Участник
Зарегистрирован: 20.09.2011
Сообщений: 3

Re: Помогите с запросом

Наверное, вы все таки правы, это я не прав, ваша конструкция работает. Спасибо.

Неактивен

 

Board footer

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