помогите с запросом
От: 55aaf925-4dbf-4578-9e3c-2f63d11aeda5  
Дата: 16.05.05 19:40
Оценка:
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'
как такое прокрутить?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re: помогите с запросом
От: crackoff Россия  
Дата: 16.05.05 21:32
Оценка:
Здравствуйте, 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>>
Re[2]: помогите с запросом
От: 55aaf925-4dbf-4578-9e3c-2f63d11aeda5  
Дата: 16.05.05 23:17
Оценка:
Здравствуйте, 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' одновременно
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[3]: помогите с запросом
От: Toughpheeckouse Россия  
Дата: 17.05.05 05:08
Оценка:
Здравствуйте, 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

То?
Думайте сами, решайте сами...
Re[4]: помогите с запросом
От: Toughpheeckouse Россия  
Дата: 17.05.05 05:11
Оценка:
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
Думайте сами, решайте сами...
Re[5]: помогите с запросом
От: Toughpheeckouse Россия  
Дата: 17.05.05 05:14
Оценка:
T>+ сочетание полей id_type и value должно быть уникально
T>Если нет, то уcловие должно быть таким HAVING COUNT(*) >= 2
с этим я поспешил.... утверждение неверно
Думайте сами, решайте сами...
Re: помогите с запросом
От: FedorVlad Украина  
Дата: 17.05.05 05:22
Оценка:
Здравствуйте, 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')
Re: помогите с запросом
От: Smirnov.Anton Россия  
Дата: 17.05.05 05:28
Оценка: 3 (1)
Здравствуйте, 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'
Re: помогите с запросом
От: Козьма Прутков Россия  
Дата: 17.05.05 05:51
Оценка:
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')
Posted via RSDN NNTP Server 2.0 beta
Да хранит вас господь в сухом прохладном месте...
Re: помогите с запросом
От: Sinclair Россия https://github.com/evilguest/
Дата: 18.05.05 05:09
Оценка:
Здравствуйте, 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>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: помогите с запросом
От: Osama  
Дата: 20.05.05 09:45
Оценка:
Здравствуйте, 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'


точно не помню второй запрос наверно надо будет в скобки взять. Нет возможнотси проверить
Re[2]: помогите с запросом
От: Smirnov.Anton Россия  
Дата: 20.05.05 10:48
Оценка:
Здравствуйте, 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>точно не помню второй запрос наверно надо будет в скобки взять. Нет возможнотси проверить
к сожалению ваш запрос работает принципиально не верно, так как надо не или, а И
Re: помогите с запросом
От: 55aaf925-4dbf-4578-9e3c-2f63d11aeda5  
Дата: 20.05.05 15:11
Оценка:
Здравствуйте, 55aaf925-4dbf-4578-9e3c-2f63d11aeda5, Вы писали:

всем кто ответил спасибо
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.