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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 16:47   #1
propxet
Новичок
Джуниор
 
Регистрация: 22.02.2013
Сообщений: 2
По умолчанию Вопрос по запросу к БД MySql

Всем здравствуйте! Вопрос скорее всего простой, но я что-то торможу...
Есть таблица из четырех полей: id (ключевое), key, type, val
Смысл ее в том, что для разных значений ключа (key) в ней хранятся его свойства в паре тип (type) - значение (val). При этом для одного ключа может быть несколько разных типов свойств, а для каждого свойства несколько разных значений. Нужно из этой таблички запросом получить список всех значений ключей, каждый из которых обладает определенным набором свойств, например у которых type=t1, val=v1 и type=t2, val=v2.
Например, при таком заполнении указанной таблицы:
key type val
1 1 1
2 1 1
3 2 1
1 2 1
запрос должен вернуть только одно значение (key=1), если требуется получить все ключи, у которых есть свойство (type) 1 со значением (val) 1 и (одновременно) свойство (type) 2 со значением (val) 1.

Заранее спасибо!
propxet вне форума Ответить с цитированием
Старый 22.02.2013, 18:04   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
select * from  t where --запрос должен вернуть
  ( type=1 and val=1 ) ---у которых есть свойство (type) 1 со значением (val) 1
and --- и (одновременно)
  ( type=2  and val=2) --свойство (type) 2 со значением (val) 1.
Код:
select * from t
inner  --- и (одновременно)
    join t as t1 on t.key=t1.kay 
                                          and  t1.type=1 and t1.val=2  ---у которых есть свойство (type) 1 со значением (val) 1
inner  --- и (одновременно)
    join t as t2 on t.key=t2.kay 
                                          and t2.type=1 and r2.val=2 --свойство (type) 2 со значением (val) 1.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 22.02.2013 в 18:09.
evg_m вне форума Ответить с цитированием
Старый 22.02.2013, 19:43   #3
propxet
Новичок
Джуниор
 
Регистрация: 22.02.2013
Сообщений: 2
По умолчанию

Спасибо за ответ!
Первый код я пробовал, он возвращает пустое множество, что скорее всего и правильно
А второй попробую, как доберусь до компа...

Спасибо огромное. Работает как надо. Даже в голову не приходило применить INNER JOIN к одной таблице. Век живи-век учись

Последний раз редактировалось propxet; 23.02.2013 в 00:01. Причина: дополнение
propxet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по sql запросу в Access NDmitry Microsoft Office Access 5 22.02.2010 17:24
Еще вопрос по запросу БД Sweta Общие вопросы C/C++ 3 10.11.2009 20:41
вопрос по динамическому запросу natishka БД в Delphi 8 24.08.2009 13:53
Вопрос по запросу на иморт внешних связей! Klim Bassenger Microsoft Office Excel 0 25.05.2009 13:41
вопрос по SQL запросу Anton_S БД в Delphi 5 09.06.2008 01:47