SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 19.02.2013 23:45:14

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

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

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

Неактивен

 

#2 19.02.2013 23:55:41

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

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

Здравствуйте.
SELECT `key` FROM `НАЗВАНИЕ_ТАБЛИЦЫ` WHERE type=t1 AND val=v1;
Оно?


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

Неактивен

 

#3 20.02.2013 23:06:00

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

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

Не совсем....
Например, при таком заполнении указанной таблицы:
key             type                val
1                 1                    1
2                 1                    1
3                 2                    1
1                 2                    1
Нужен запрос, который вернул бы значения ключей у которых есть свойство (type) 1 со значением (val) 1 и (одновременно) свойство (type) 2 со значением (val) 1. Т.е. для данного заполнения должно вернуться одно значение key = 1.

Неактивен

 

#4 21.02.2013 12:20:41

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

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

SELECT `key` FROM `НАЗВАНИЕ_ТАБЛИЦЫ` WHERE (type=1 AND val=v1) OR (type=2 AND val=v1) GROUP BY `key` HAVING count(*)=2;
 

Неактивен

 

#5 21.02.2013 20:34:43

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

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

HAVING count(*) - это обыгрывание приведенного частного случая. Таблица имеет произвольное количество записей, и какого размера должна быть результирующая выборка заранее неизвестно.

Неактивен

 

Board footer

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