Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить все записи у которых есть две услуги / 6 сообщений из 6, страница 1 из 1
29.06.2020, 21:51
    #39974285
kolhoz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
Здравствуйте. Есть таблица tmp с полями fio, usluga, type. В поле usluga могут быть значения Сборка ПК со скидкой, Сборка ПК, Ремонт ПК, Ремонт ПК со скидкой.

В поле type значение 1 для вариантов Сборка ПК со скидкой, Сборка ПК и значение 2 для вариантов Ремонт ПК, Ремонт ПК со скидкой.

Как получить записи только тех пациентов, у которых в поле type и 1 и 2? Т.е. только тех пациентов, которым делали ремонт ПК и сборку ПК.
...
Рейтинг: 0 / 0
29.06.2020, 22:08
    #39974290
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
having count(distinct type) = 2
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.06.2020, 22:10
    #39974291
kolhoz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
Dimitry Sibiryakov, А как будет выглядеть весь запрос?
...
Рейтинг: 0 / 0
30.06.2020, 09:41
    #39974422
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
kolhoz


Как получить записи только тех пациентов, у которых в поле type и 1 и 2? Т.е. только тех пациентов, которым делали ремонт ПК и сборку ПК.


у Вас "тоесть" не соответствует " у которых в поле type и 1 и 2"

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SQL> ed
Wrote file afiedt.buf

  1  with tmp( fio, usluga,type) as (
  2  select 'kolhoz','Сборка ПК со скидкой',1 from dual union all
  3  select 'kolhoz','Сборка ПК',1 from dual union all
  4  select 'kolhoz','Ремонт ПК со скидкой',2 from dual union all
  5  select 'kolhoz','Ремонт ПК',2 from dual union all
  6  --
  7  select 'Stax','Сборка ПК со скидкой',1 from dual union all
  8  select 'Stax','Ремонт ПК со скидкой',2 from dual union all
  9  select 'Stax','Ремонт ПК',2 from dual union all
 10  --
 11  select 'Dimitry','Сборка ПК со скидкой',1 from dual union all
 12  select 'Dimitry','Ремонт ПК со скидкой' ,2 from dual union all
 13  select 'Dimitry','Ремонт ПК',2 from dual union all
 14  select 'Dimitry','Ремонт ПК',2 from dual union all
 15  select 'Dimitry','Ремонт ПК',2 from dual union all
 16  select 'Dimitry','Утилизация ПК',3 from dual)
 17  select fio from tmp
 18  where type in (1,2) and usluga not like '%со скидкой'
 19* group by fio having count(distinct usluga)=2
SQL> /

FIO
-------
kolhoz



....
stax
...
Рейтинг: 0 / 0
30.06.2020, 10:17
    #39974432
kolhoz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
Stax, нет. Мне нужно отобрать всех клиентов (все записи клиентов), которым оказывались услуги сборки и ремонта ПК независимо это со скидкой или без.

Одному клиенту могли оказать три услуги ремонт без скидки, ремонт со скидкой и сборка ПК.
Второму могли два раза оказать услугу ремонта ПК, но не сборки, тогда такой пациент не нужен.
...
Рейтинг: 0 / 0
30.06.2020, 10:34
    #39974438
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить все записи у которых есть две услуги
kolhoz
Stax, нет. Мне нужно отобрать всех клиентов (все записи клиентов) , которым оказывались услуги сборки и ремонта ПК независимо это со скидкой или без.

Одному клиенту могли оказать три услуги ремонт без скидки, ремонт со скидкой и сборка ПК.
Второму могли два раза оказать услугу ремонта ПК, но не сборки, тогда такой пациент не нужен.


так клиентов или все записи?

ps
если нужно ремонт% И сборка% то Dimitry Sibiryakov 22159278
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SQL> ed
Wrote file afiedt.buf

  1  with tmp( fio, usluga,type) as (
  2  select 'kolhoz','Сборка ПК со скидкой',1 from dual union all
  3  select 'kolhoz','Сборка ПК',1 from dual union all
  4  select 'kolhoz','Ремонт ПК со скидкой',2 from dual union all
  5  select 'kolhoz','Ремонт ПК',2 from dual union all
  6  --
  7  select 'Stax','Ремонт ПК со скидкой',2 from dual union all
  8  select 'Stax','Ремонт ПК со скидкой',2 from dual union all
  9  select 'Stax','Ремонт ПК со скидкой',2 from dual union all
 10  select 'Stax','Ремонт ПК со скидкой',2 from dual union all
 11  select 'Stax','Ремонт ПК',2 from dual union all
 12  --
 13  select 'Dimitry','Сборка ПК со скидкой',1 from dual union all
 14  select 'Dimitry','Ремонт ПК со скидкой' ,2 from dual union all
 15  select 'Dimitry','Ремонт ПК',2 from dual union all
 16  select 'Dimitry','Ремонт ПК',2 from dual union all
 17  select 'Dimitry','Ремонт ПК',2 from dual union all
 18  select 'Dimitry','Утилизация ПК',3 from dual)
 19  select fio from tmp
 20  where type in (1,2)
 21* group by fio having count(distinct type)=2
SQL> /

FIO
-------
kolhoz
Dimitry



.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить все записи у которых есть две услуги / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]