Как проверить, что в множестве есть и 'A', и 'B' ?
От: Аноним  
Дата: 11.01.11 13:26
Оценка:
Как сделать выборку, например, по 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'
Re: Как проверить, что в множестве есть и 'A', и 'B' ?
От: MasterZiv СССР  
Дата: 11.01.11 13:54
Оценка:
On 11.01.2011 16:26, Аноним 403 wrote:

> Как сделать выборку, например, по ID, чтобы в выборку попали только записи с ID,

> у которых другое поле содержит оба значения (а не одно из)?

Поясни.

Потому как Одно поле может содержать только одно значение.
И поле не может содержать одновременно два значения из искомых.
Либо одно, либо второе.
Posted via RSDN NNTP Server 2.1 beta
Re: Как проверить, что в множестве есть и 'A', и 'B' ?
От: Muxa  
Дата: 11.01.11 14:03
Оценка:
 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
-------------------------------
Re[2]: Как проверить, что в множестве есть и 'A', и 'B' ?
От: opener  
Дата: 11.01.11 15:40
Оценка:
Здравствуйте, 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 не понимает.
Re[3]: Как проверить, что в множестве есть и 'A', и 'B' ?
От: Muxa  
Дата: 11.01.11 15:44
Оценка:
O>ORACLE не понимает.
mssqlserver понимает. перепиши там под свой sql.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.