Sigmond Gatt Ответов: 3

Вопрос оракула (может быть простым для некоторых из вас.)


привет ребята у меня есть этот стол :


client     type     school
a           1          123
a           2          123  
b           1          123
b           2          123
c           1          123
d           2          123
e           3          123


обратите внимание, что эта таблица создана для данного примера.

мне нужно получить тех клиентов, которые имеют тип 1 и 2, поэтому в этом случае я хочу клиентов a & b

Как я могу сделать запрос, чтобы получить только эти 2.

Что я уже пробовал:

я попробовал этот запрос, но он не очень хорош :
выберите отдельный клиент из таблицы
где
(тип = 1) или ( тип = 2);

Kornfeld Eliyahu Peter

Вы написали: "тип 1 и 2" - это должно включать в себя c и d тоже...
Или вы имеете в виду те, у которых тоже есть тип 1 и 2?

Sigmond Gatt

клиент должен иметь оба типа для выбора. я нашел решение, которое вы можете посмотреть в разделе решение.

Kornfeld Eliyahu Peter

Ваше решение не имеет ничего общего с вашим вопросом и образцом, поскольку тип никогда не бывает " А " или "б"...

3 Ответов

Рейтинг:
28

Sigmond Gatt

ребята, я нашел решение для того, что имел в виду.


select distinct client from table a
 join table b on
   b.client = a.client
where a.type= '1'
   and b.type = '2'


это вернет все клиенты, которые имеют оба типа.


Kornfeld Eliyahu Peter

Очевидно, ошибся! Тип никогда не бывает "А" или "б"?

Sigmond Gatt

о, Извините, я обновил решение.

Рейтинг:
17

Kornfeld Eliyahu Peter

SELECT T1.CLIENT
FROM [YOUR_TBL] T1
  INNER JOIN [YOUR_TBL] T2 ON T2.CLIENT = T1.CLIENT AND T2.TYPE <> 1
WHERE 
  T1.TYPE = 1 AND T2.TYPE = 2


Sigmond Gatt

почему Т2.Типа &ЛТ;&ГТ; 1? .. будет ли разница?

Kornfeld Eliyahu Peter

Меньше (половина?) строки в соединении...

Sigmond Gatt

ну ок, я постараюсь его. спасибо :)

Рейтинг:
1

Member 13908591

select client,type1 from school
where (type1=1 or type1=2) and (client='a' or client='b');


Kornfeld Eliyahu Peter

А что делать, если в реальных данных есть другой клиент как с типом 1, так и с типом 2?

Sigmond Gatt

да хороший вопрос Корнфельд. Это неправильное решение.