Как сделать выборку, например, по ID, чтобы в выборку попали только записи с ID, у которых другое поле содержит оба значения (а не одно из)?
пример:
id | criteria | data
--------------------|---------
1 | A | xxx
1 | A | yyy
2 | A | zzz
2 | B | kkk
2 | A | lll
3 | B | mmm
-------------------------------
В результате работы запроса в выборку должны попасть только записи:
2, 'A', 'zzz'
2, 'B', 'kkk'
2, 'A', 'lll'
On 11.01.2011 16:26, Аноним 403 wrote:
> Как сделать выборку, например, по ID, чтобы в выборку попали только записи с ID,
> у которых другое поле содержит оба значения (а не одно из)?
Поясни.
Потому как Одно поле может содержать только одно значение.
И поле не может содержать одновременно два значения из искомых.
Либо одно, либо второе.
Posted via RSDN NNTP Server 2.1 beta
id | criteria | data
--------------------|---------
1 | A | xxx
1 | A | yyy
2 | A | zzz
2 | B | kkk
2 | A | lll
3 | B | mmm
-------------------------------
select distinct t1.* from [table] as t1
inner join [table] as t2 on t1.id = t2.id and (t1.criteria = 'A' and t2.criteria = 'B' or t1.criteria = 'B' and t2.criteria = 'A')
id | criteria | data
--------------------|---------
2 | A | zzz
2 | B | kkk
2 | A | lll
-------------------------------
Здравствуйте, Muxa, Вы писали:
M>[sql]
M> id | criteria | data
M>--------------------|---------
M> 1 | A | xxx
M> 1 | A | yyy
M> 2 | A | zzz
M> 2 | B | kkk
M> 2 | A | lll
M> 3 | B | mmm
M>-------------------------------
M>select distinct t1.* from [table] as t1
M>inner join [table] as t2 on t1.id = t2.id and (t1.criteria = 'A' and t2.criteria = 'B' or t1.criteria = 'B' and t2.criteria = 'A')
ORACLE не понимает.
O>ORACLE не понимает.
mssqlserver понимает. перепиши там под свой sql.