Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Исключение подзапроса из выборки / 16 сообщений из 16, страница 1 из 1
04.09.2019, 09:37
    #39856956
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Добрый день. Ткните носом(пытался сам найти на форуме, но не нашел).
Вопрос следующего характера:
Есть 2 таблицы: product и rev_product(таблицы связаны между собой по полю id_product). В product хранятся уникальные товары с ключевым полем id_product, в таблице rev_product(ключевое поле id_rev) хранятся результаты проверок документов по продуктам из product. Т.е. мы имеем ситуацию при которой в имеется товар в таблице product, а в таблице rev_product имеется несколько проверок, успешные/не успешные(данное значение записывается в поле result).
Из этого получается следующий вопрос:Как вытащить продукты из таблицы product, по которым в таблице rev_product были только успешные проверки(т.е. по товары отсутствует не успешные проверки вообще).
Заранее спасибо за ответы на глупый вопрос)
...
Рейтинг: 0 / 0
04.09.2019, 09:44
    #39856960
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFiveДобрый день. Ткните носом(пытался сам найти на форуме, но не нашел).
Вопрос следующего характера:
Есть 2 таблицы: product и rev_product(таблицы связаны между собой по полю id_product). В product хранятся уникальные товары с ключевым полем id_product, в таблице rev_product(ключевое поле id_rev) хранятся результаты проверок документов по продуктам из product. Т.е. мы имеем ситуацию при которой в имеется товар в таблице product, а в таблице rev_product имеется несколько проверок, успешные/не успешные(данное значение записывается в поле result).
Из этого получается следующий вопрос:Как вытащить продукты из таблицы product, по которым в таблице rev_product были только успешные проверки(т.е. по товары отсутствует не успешные проверки вообще).
Заранее спасибо за ответы на глупый вопрос)

вообще "были только успешные проверки" и "отсутствует не успешные проверки вообще" - совсем не одно и то же.
...
Рейтинг: 0 / 0
04.09.2019, 09:54
    #39856962
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Посетительвообще "были только успешные проверки" и "отсутствует не успешные проверки вообще" - совсем не одно и то же.
ну да могло вообще не быть покупок
...
Рейтинг: 0 / 0
04.09.2019, 10:02
    #39856967
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Посетитель,добрый день.
Я имею ввиду следующее: По указанному продукту есть в любом случае записи проверок(при этом неоднократные), я хочу именно выгрузить те продукты, по которым были только успешные проверки(т.е. записей у указанного продукта из таблицы product отсутствует записи о том, что проверка проведена не успешно в таблице rev_product)
...
Рейтинг: 0 / 0
04.09.2019, 10:09
    #39856971
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFiveтолько успешные проверки ... отсутствует записи о том, что проверка проведена не успешноНезачем упорствовать в непонимании вопроса. Определись уже - либо то, либо другое.
...
Рейтинг: 0 / 0
04.09.2019, 10:14
    #39856977
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
-2-TheMultiFiveтолько успешные проверки ... отсутствует записи о том, что проверка проведена не успешноНезачем упорствовать в непонимании вопроса. Определись уже - либо то, либо другое.
Должно быть я просто не так выразился во второй части сообщения, я как раз и имею ввиду, что необходимы лишь те товары, по которым только успешные проверки.
...
Рейтинг: 0 / 0
04.09.2019, 10:19
    #39856979
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFiveтолько успешныеhaving max/min
...
Рейтинг: 0 / 0
04.09.2019, 10:27
    #39856985
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
-2-TheMultiFiveтолько успешныеhaving max/min
Возможно, я вас не так понял, но уточню: В поле result записывается текстовое значение, "Проверка успешна" или "Проверка не успешна". having к этому полю не применить.
...
Рейтинг: 0 / 0
04.09.2019, 10:36
    #39856993
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFive,

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

  1  with product (id_product) as(
  2  select 1 from dual union all
  3  select 2 from dual union all
  4  select 3 from dual
  5  ),
  6  rev_product(id_rev,ref_product,result) as(
  7  select 10,1,'Проверка не успешна' from dual union all
  8  select 11,1,'Проверка успешна' from dual union all
  9  select 12,2,'Проверка успешна' from dual)
 10  select id_product from product p,rev_product r
 11  where ref_product=id_product
 12  group by id_product
 13* having count(nullif(result,'Проверка успешна'))=0 and count(nullif(result,'Проверка не успешна'))>0
SQL> /

ID_PRODUCT
----------
         2



ps
+
select where exists ('Проверка успешна') and not exists('Проверка не успешна')
.....
stax
...
Рейтинг: 0 / 0
04.09.2019, 10:39
    #39856995
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFiveВозможно, я вас не так понял, но уточню: В поле result записывается текстовое значение, "Проверка успешна" или "Проверка не успешна". having к этому полю не применить.
еще как применить
а если не хотите HAVING то NOT EXISTS (неуспешно) and EXISTS (успешно)
...
Рейтинг: 0 / 0
04.09.2019, 10:43
    #39856996
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Stax,

having min(result)= 'Проверка успешна'
...
Рейтинг: 0 / 0
04.09.2019, 10:46
    #39856997
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
TheMultiFive,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with 
product (id_product,name_product) as (
 select 1, 'Банан' from dual union all
 select 2, 'Груша' from dual union all
 select 3, 'Арбуз' from dual union all
 select 4, 'Вишня' from dual 
),
product_rev(id_product,success) as (
 select 1,'Y' from dual union all
 select 2,'N' from dual union all
 select 3,'Y' from dual union all
 select 3,'N' from dual union all
 select 4,'Y' from dual union all
 select 4,'Y' from dual 
)
select * 
from product p
where     exists (select * from product_rev pr where pr.id_product=p.id_product and pr.success='Y')
  and not exists (select * from product_rev pr where pr.id_product=p.id_product and pr.success='N')

С заходом от product_rev
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
from (
  select id_product 
    from product_rev 
  group by id_product 
  having count(*)>0
     and count(case when success='N' then 1 end) = 0
) q
join product p using (id_product)
...
Рейтинг: 0 / 0
04.09.2019, 10:46
    #39856998
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
MazoHistStax,

having min(result)= 'Проверка успешна'
ето вариант -2-

....
stax
...
Рейтинг: 0 / 0
04.09.2019, 11:02
    #39857006
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Да нуTheMultiFive,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with 
product (id_product,name_product) as (
 select 1, 'Банан' from dual union all
 select 2, 'Груша' from dual union all
 select 3, 'Арбуз' from dual union all
 select 4, 'Вишня' from dual 
),
product_rev(id_product,success) as (
 select 1,'Y' from dual union all
 select 2,'N' from dual union all
 select 3,'Y' from dual union all
 select 3,'N' from dual union all
 select 4,'Y' from dual union all
 select 4,'Y' from dual 
)
select * 
from product p
where     exists (select * from product_rev pr where pr.id_product=p.id_product and pr.success='Y')
  and not exists (select * from product_rev pr where pr.id_product=p.id_product and pr.success='N')

С заходом от product_rev
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
from (
  select id_product 
    from product_rev 
  group by id_product 
  having count(*)>0
     and count(case when success='N' then 1 end) = 0
) q
join product p using (id_product)


Большое спасибо за помощь)
...
Рейтинг: 0 / 0
04.09.2019, 11:02
    #39857008
TheMultiFive
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
StaxTheMultiFive,

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

  1  with product (id_product) as(
  2  select 1 from dual union all
  3  select 2 from dual union all
  4  select 3 from dual
  5  ),
  6  rev_product(id_rev,ref_product,result) as(
  7  select 10,1,'Проверка не успешна' from dual union all
  8  select 11,1,'Проверка успешна' from dual union all
  9  select 12,2,'Проверка успешна' from dual)
 10  select id_product from product p,rev_product r
 11  where ref_product=id_product
 12  group by id_product
 13* having count(nullif(result,'Проверка успешна'))=0 and count(nullif(result,'Проверка не успешна'))>0
SQL> /

ID_PRODUCT
----------
         2



ps
+
select where exists ('Проверка успешна') and not exists('Проверка не успешна')
.....
stax
Большое спасибо за помощь)
...
Рейтинг: 0 / 0
04.09.2019, 11:05
    #39857009
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение подзапроса из выборки
Да ну,

group by id_product
having count(*)>0 всегда >0 (лишнее)

ps
NULLIF /CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END


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


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