Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 DISTINCT  [new]
petrovichvanya
Member

Откуда:
Сообщений: 85
Подскажите пожалуйста, почему такая разница в количестве записей ?
select  c.* from brscontracts c
INNER JOIN brsactions a ON (c.contractid = a.contractid)
AND (a.storndate IS NULL)
where c.contractnum = 'E0000521'

236 запись
select distinct c.* from brscontracts c
INNER JOIN brsactions a ON (c.contractid = a.contractid)
AND (a.storndate IS NULL)
where c.contractnum = 'E0000521'

1 запись
6 дек 18, 15:33    [21755957]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
Dshedoo
Member

Откуда:
Сообщений: 241
petrovichvanya
Подскажите пожалуйста, почему такая разница в количестве записей ?
select  c.* from brscontracts c
INNER JOIN brsactions a ON (c.contractid = a.contractid)
AND (a.storndate IS NULL)
where c.contractnum = 'E0000521'

236 запись
select distinct c.* from brscontracts c
INNER JOIN brsactions a ON (c.contractid = a.contractid)
AND (a.storndate IS NULL)
where c.contractnum = 'E0000521'

1 запись

Потому что из brscontracts выбирается 1 строка и множится с 236 строками из brsactions?
Во 2ом селекте выбирается 1 строка и 236 раз множится, затем уже дистинктится?
6 дек 18, 15:42    [21755969]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2075
petrovichvanya
Подскажите пожалуйста, почему такая разница в количестве записей ?
DISTINCT | UNIQUE
DISTINCT | UNIQUE
Specify DISTINCT or UNIQUE if you want the database to return only one copy of each set of duplicate rows selected. These two keywords are synonymous. Duplicate rows are those with matching values for each expression in the select list.
7 дек 18, 12:50    [21756921]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
Stawros
Member

Откуда:
Сообщений: 18
select C.*
  from BRSCONTRACTS C
 where C.CONTRACTNUM = 'E0000521'
   and exists
           (select 1
              from BRSACTIONS A
             where C.CONTRACTID = A.CONTRACTID
               and A.STORNDATE is null)

Такой запрос сколько строк возвращает?
7 дек 18, 16:50    [21757335]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
SkilledJunior
Member

Откуда:
Сообщений: 294
petrovichvanya,

Потому что c.contractnum = 'E0000521'
8 дек 18, 15:24    [21757877]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить