SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 09.11.2010 23:35:26

yellowcat
Участник
Зарегистрирован: 09.11.2010
Сообщений: 19

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

Уважаемые пользователи этого форума. Помогите с запросом. И вообще, возможно ли составить такой запрос в принципе.

Имеем таблицу:


UID FKEY    VALUE
--------------------
1     GENDER     m
1     MUSIC     rock
1     COLOR     blue

2     GENDER     m
2     MUSIC     pop
2     COLOR     red

3     GENDER     w
3     MUSIC     classic
3     COLOR     green

4     GENDER     w
4     MUSIC     rock
4     COLOR     blue


Можно ли вытащить одним запросом UID тех кто ( FKEY = 'GENDER' AND VALUE = 'm' ) и ( FKEY = 'MUSIC' AND VALUE = 'rock' )
то есть по двум условиям одновременно, не трогая тех, у кого есть вхождения только по одному параметру?

Спасибо.

Неактивен

 

#2 09.11.2010 23:49:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

SELECT t1.uid
FROM tablename t1, tablename t2
WHERE t1.uid = t2.uid AND
t1.fkey = 'GENDER' AND t1.VALUE = 'm' AND
t2.fkey = 'MUSIC' AND t2.VALUE = 'rock'

Неактивен

 

#3 09.11.2010 23:57:27

yellowcat
Участник
Зарегистрирован: 09.11.2010
Сообщений: 19

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

Огромное спасибо. Оперативно и правильно! Во всяком случае мне подошло.
А есть ли другие варианты решения этой задачи? Мне нужно для общего развития.

Неактивен

 

#4 10.11.2010 01:13:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

Ну, можно подзапросом переписать smile Но смысл останется тем же — по
таблице нужно бежать дважды, так как надо проверить два условия в
разных строках.

Неактивен

 

Board footer

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