Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>id_contact | id_type | value 544>1 | 1 | 'wwww' 544>1 | 2 | 'zzzz'
544>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>как такое прокрутить?
(id_type=1 and value='wwww') OR (id_type=2 and value='zzzz')?
... << RSDN@Home 1.1.4 beta 6a rev. 436> <под Within Temptation — Running Up That Hill>>
Здравствуйте, crackoff, Вы писали:
C>Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>>id_contact | id_type | value 544>>1 | 1 | 'wwww' 544>>1 | 2 | 'zzzz'
544>>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>>как такое прокрутить?
C>(id_type=1 and value='wwww') OR (id_type=2 and value='zzzz')?
не то. В данном случае оно выберет id_contact в случае если допустим (id_type=1 and value='wwww') а запись с id_type=2 может и не быть value='zzzz'
Смотри — есть 2 записи. Надо выбрать их значение(я) id_contact только если в первой записи id_type=1 and value='wwww', а во второй value='wwww' AND id_type=2 and value='zzzz'. И только тогда. Иначе ничего не выбирать.
ЗЫ. Задача такова. Есть таблица контактов, есть таблица типов и есть таблица значений. Вот таблица значений хранит id контакта, id типа и само значение. Нужно сделать поиск по "И" — т.е. выбрать контакт только если значение первого поля 'wwww', а второго — 'zzzz' одновременно
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>Здравствуйте, crackoff, Вы писали:
C>>Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>>>id_contact | id_type | value 544>>>1 | 1 | 'wwww' 544>>>1 | 2 | 'zzzz'
544>>>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>>>как такое прокрутить?
C>>(id_type=1 and value='wwww') OR (id_type=2 and value='zzzz')?
544>не то. В данном случае оно выберет id_contact в случае если допустим (id_type=1 and value='wwww') а запись с id_type=2 может и не быть value='zzzz' 544>Смотри — есть 2 записи. Надо выбрать их значение(я) id_contact только если в первой записи id_type=1 and value='wwww', а во второй value='wwww' AND id_type=2 and value='zzzz'. И только тогда. Иначе ничего не выбирать.
544>ЗЫ. Задача такова. Есть таблица контактов, есть таблица типов и есть таблица значений. Вот таблица значений хранит id контакта, id типа и само значение. Нужно сделать поиск по "И" — т.е. выбрать контакт только если значение первого поля 'wwww', а второго — 'zzzz' одновременно
SELECT
t.id_contact
FROM Table t
WHERE (t.id_type=1 and t.value='wwww') OR (t.id_type=2 and t.value='zzzz')
GROUP BY t.id_contact
HAVING COUNT(*) = 2
544>>не то. В данном случае оно выберет id_contact в случае если допустим (id_type=1 and value='wwww') а запись с id_type=2 может и не быть value='zzzz' 544>>Смотри — есть 2 записи. Надо выбрать их значение(я) id_contact только если в первой записи id_type=1 and value='wwww', а во второй value='wwww' AND id_type=2 and value='zzzz'. И только тогда. Иначе ничего не выбирать.
544>>ЗЫ. Задача такова. Есть таблица контактов, есть таблица типов и есть таблица значений. Вот таблица значений хранит id контакта, id типа и само значение. Нужно сделать поиск по "И" — т.е. выбрать контакт только если значение первого поля 'wwww', а второго — 'zzzz' одновременно
T>SELECT T> t.id_contact T>FROM Table t T>WHERE (t.id_type=1 and t.value='wwww') OR (t.id_type=2 and t.value='zzzz') T>GROUP BY t.id_contact T>HAVING COUNT(*) = 2
T>То?
+ сочетание полей id_type и value должно быть уникально
Если нет, то уcловие должно быть таким HAVING COUNT(*) >= 2
T>+ сочетание полей id_type и value должно быть уникально T>Если нет, то уcловие должно быть таким HAVING COUNT(*) >= 2
с этим я поспешил.... утверждение неверно
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>id_contact | id_type | value 544>1 | 1 | 'wwww' 544>1 | 2 | 'zzzz'
544>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>как такое прокрутить?
select id_contact from table where id_type in (1,2) and (value='wwww' or value='zzzz')
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>id_contact | id_type | value 544>1 | 1 | 'wwww' 544>1 | 2 | 'zzzz'
544>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>как такое прокрутить?
select id_contact from MyTable t1 inner join MyTable t2 on t1.id_contact=t2.id_contact
wgere t1.id_type=1 and t1.value='wwww' and t2.id_type=2 and t2.value='zzzz'
55aaf925-4dbf-4578-9e3c-2f63d11aeda5 wrote: > id_contact | id_type | value > 1 | 1 | 'wwww' > 1 | 2 | 'zzzz' > > выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' > как такое прокрутить?
масса вариантов преложена, но я таки влезу:
select id_contact
from Contact cnt
where
exists (select 1 from Contact cnt1 where cnt.id_contact =
cnt1.id_contact and cnt1.id_type=1 and cnt1.value='www') and
exists (select 1 from Contact cnt1 where cnt.id_contact =
cnt1.id_contact and cnt1.id_type=2 and cnt1.value='zzz')
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>id_contact | id_type | value 544>1 | 1 | 'wwww' 544>1 | 2 | 'zzzz'
544>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>как такое прокрутить?
select a.id_contact from
(select id_contact from table1 where id_type=1 and value='wwww') a
inner join
(select id_contact from table1 where id_type=2 and value='zzzz') b
on a.id_contact = b.id_contact
Мысль понятна?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>id_contact | id_type | value 544>1 | 1 | 'wwww' 544>1 | 2 | 'zzzz'
544>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>как такое прокрутить?
Идем по пути наименьшего сопротивления
select id_contact
from [чего там]
where id_type=1 and value='wwww'
union
select id_contact
from [чего там]
where id_type=2 and value='zzz'
точно не помню второй запрос наверно надо будет в скобки взять. Нет возможнотси проверить
Здравствуйте, Osama, Вы писали:
O>Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:
544>>id_contact | id_type | value 544>>1 | 1 | 'wwww' 544>>1 | 2 | 'zzzz'
544>>выбрать id_contact=1 если только id_type=1 and value='wwww' AND id_type=2 and value='zzzz' 544>>как такое прокрутить?
O>Идем по пути наименьшего сопротивления
O>select id_contact O>from [чего там] O>where id_type=1 and value='wwww' O>union O>select id_contact O>from [чего там] O>where id_type=2 and value='zzz' O>точно не помню второй запрос наверно надо будет в скобки взять. Нет возможнотси проверить
к сожалению ваш запрос работает принципиально не верно, так как надо не или, а И