Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Помогите составить запрос правильно


Автор: webaliser 8.9.2009, 12:13
Добрый день, господа. Помогите неучу составить запрос, забыл я SQL уже давно, помню только мелочи. Их оказалось не достаточно.

Есть таблица
  • ID - autoinc
  • IDENT - INT10
  • KEY - VARCHAR
  • VALUE - LONGBLOB

В данной таблице хранятся разные связки key/value с общим IDENT. Мне нужно выбрать все IDENT, VALUE, где KEY = 'A' или KEY = 'B'. 
Но одна строка выдачи должна выглядеть так:

IDENT | VALUE as A (где KEY = 'A') |  VALUE as B (где KEY = 'B')

Спасибо за помощь

Автор: Akina 8.9.2009, 12:35
Можно ли гарантировать, что пара IDENT+VALUE - уникальна? по крайней мере для KEY = 'A' или 'B'

Автор: webaliser 8.9.2009, 23:42
IDENT - идентификатор, группирующий множество разных пар KEY/VALUE в одной таблице.

IDENT/KEY уникальна
IDENT/KEY/VALUE - соответственно
IDENT/VALUE - значение может быть одинаково при разных KEY

Автор: Akina 9.9.2009, 08:05
Код

select t1.ident as ident, t1.value as value_a, t2.value as value_b
from table as t1
inner join table as t2
on t1.ident=t2.ident
where t1.key='A'
and t2.key='B'

Автор: webaliser 9.9.2009, 09:01
с Join'ами у меня всегда были проблемы... smile Спасибо

Скажите, не озадачит ли систему то, что таких полей выбирается не 2, а около 40 (из около 100) ?

Автор: Akina 9.9.2009, 09:09
 smile 
Цитата(webaliser @  9.9.2009,  10:01 Найти цитируемый пост)
Скажите, не озадачит ли систему то, что таких полей выбирается не 2, а около 40 (из около 100)

Озадачит? да она офигеет! в запросе выбирается три поля, а надо, оказывается, сто...

Автор: Zloxa 9.9.2009, 09:13
Все прелести EAV налицо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)