Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 17:29   #1
freeek
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 3
По умолчанию mysql. select значения по нескольким полям

есть таблица tbl вида:
Код:
| id | entry_id | key |
и соответственно в ней записи:
Код:
| 1 | 100 | key1 |
| 2 | 100 | key2 |
| 3 | 101 | key1 |
| 4 | 102 | key1 |
мне требуется найти entry_id по двум значениям key, то есть должно выглядеть примерно так:
Код HTML:
SELECT entry_id FROM tbl WHERE key = 'key1' AND key = 'key2' GROUP BY entry_id
и выдавать только значение 100

WHERE key IN ('key1', 'key2') не могу использовать так как он находит записи с 'key1', но без 'key2'

очень нужна помощь как можно быстрее
freeek вне форума Ответить с цитированием
Старый 23.05.2012, 18:06   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

AND заменить на OR? Или нужно, чтобы обязательно были записи для обоих ключей?
pu4koff вне форума Ответить с цитированием
Старый 23.05.2012, 18:07   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Вообще говоря, ведь не обязано быть только 100 в ответе. В общем случае значения entry_id соответствующие разным key тоже различны.
Например:
Код:
| 1 | 100 | key1 |
| 2 | 100 | key2 |
| 3 | 101 | key1 |
| 4 | 102 | key1 |
| 5 | 102 | key2 |
Что теперь вы хотите получить в ответе?
Arigato вне форума Ответить с цитированием
Старый 23.05.2012, 18:47   #4
freeek
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
AND заменить на OR? Или нужно, чтобы обязательно были записи для обоих ключей?
да, нужно для обоих ключей

Цитата:
Сообщение от Arigato Посмотреть сообщение
Вообще говоря, ведь не обязано быть только 100 в ответе. В общем случае значения entry_id соответствующие разным key тоже различны.
Например:
Код:
| 1 | 100 | key1 |
| 2 | 100 | key2 |
| 3 | 101 | key1 |
| 4 | 102 | key1 |
| 5 | 102 | key2 |
Что теперь вы хотите получить в ответе?
в этом случае 100 и 102
freeek вне форума Ответить с цитированием
Старый 23.05.2012, 18:51   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для исходной таблицы получим только 100, для таблицы Arigato 100 и 102
Код:
SELECT T1.entry_id 
  FROM tbl T1
  WHERE T1.key = 'key1' AND 
        EXISTS(SELECT * FROM tbl T2 WHERE T2.entry_id=T1.entry_id AND T2.key = 'key2')
  GROUP BY T1.entry_id
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.05.2012, 18:53   #6
freeek
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 3
По умолчанию

вообщем то я ищу более элегантный способ сделать
Код HTML:
SELECT entry_id FROM tbl WHERE key = 'key1' AND entry_id IN (SELECT entry_id FROM tbl WHERE key = 'key2')
freeek вне форума Ответить с цитированием
Старый 23.05.2012, 18:55   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так тоже можно, ток проверить что быстрей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск Locate по нескольким полям athleet Общие вопросы Delphi 5 22.05.2011 15:34
Sql запрос по нескольким полям Епгений БД в Delphi 6 20.06.2010 12:04
Фильтрация по нескольким полям в OnChenge Miha87 БД в Delphi 5 10.11.2008 18:49
Фильтрация по нескольким полям! Askat БД в Delphi 1 14.06.2007 06:44