Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
Есть следующая таблица

Id Product type price quant ID Product type price quant
10 Клубника 1 5 8 8 Слива 1 5 2
10 Клубника 1 5 8 6 Свекла 2 5 10
10 Клубника 1 5 8 5 Морковь 2 5 6
10 Клубника 1 5 8 2 Груша 1 10 7
10 Клубника 1 5 8 1 Яблоко 1 5 6
9 Помидор 2 7 11 4 Апельсин 1 7 5
9 Помидор 2 7 11 3 Баклажан 2 7 8
8 Слива 1 5 2 6 Свекла 2 5 10
8 Слива 1 5 2 5 Морковь 2 5 6
Из нее нужно убрать строки, если значение из двух столбцов уже встречалось ранее.
Т.е. если в первой строке были клубника и слива, то до конца таблицы более такие значения не должны встречаться.
Результат должен быть таким.

Id Product type price quant ID Product type price quant
10 Клубника 1 5 5 8 Слива 1 5 2
9 Помидор 2 7 11 4 Апельсин 1 7 5
17 авг 12, 09:05    [13024412]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh
встречалось ранее.

Ранее чего? Для heap-organized table нет понятия "ранее".

А так, например банальный group by + first/last (keep)
17 авг 12, 09:18    [13024454]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
AmKad
Member

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

Дай исходные данные через with
17 авг 12, 09:20    [13024462]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh,

каким должен быть результат, если добавить строку

8 Слива 1 5 2 10 Клубника 1 5 8 8 ?
17 авг 12, 09:22    [13024470]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
env
monomakh
встречалось ранее.

Ранее чего? Для heap-organized table нет понятия "ранее".

А так, например банальный group by + first/last (keep)

дело в том, что сортировка не важна. Результат имеет право возвращать всегда разные строки, главное, чтобы значения не повторялись в результате.
17 авг 12, 09:26    [13024483]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
-2-
Member

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


row_number() over(partition by Product order by ранее) = 1
and
row_number() over(partition by другойProduct order by тотжеранее) = 1
17 авг 12, 09:27    [13024487]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
monomakh
Результат имеет право возвращать всегда разные строки, главное, чтобы значения не повторялись в результате.
select distinct / group by или что?
17 авг 12, 09:28    [13024491]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
env
monomakh,

каким должен быть результат, если добавить строку

8 Слива 1 5 2 10 Клубника 1 5 8 8 ?

Таким же как и описан в первом посте. Так как клубника уже встречалась и слива уже встречалась. При этом, повторюсь, без разницы что выведет запрос клубника слива или слива клубника.
17 авг 12, 09:28    [13024493]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh
Результат имеет право возвращать всегда разные строки


union
17 авг 12, 09:33    [13024518]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh
Так как клубника уже встречалась и слива уже встречалась

С чего бы это она уже встречалась?
17 авг 12, 09:33    [13024523]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
AmKad
monomakh,

Дай исходные данные через with


with products as (
select 1 rn, 10 id1,'Клубника' product1,8 id2,'Слива' product2 from dual
union
select 2 rn, 10 id1,'Клубника' product1,6 id2,'Свекла' product2 from dual
union
select 3 rn,10 id1,'Клубника' product1,5 id2,'Морковь' product2 from dual
union
select 4 rn, 10 id1,'Клубника' product1,2 id2,'Груша' product2 from dual
union
select 5 rn,10 id1,'Клубника' product1,1 id2,'Яблоко' product2 from dual
union
select 6 rn,9 id1,'Помидор' product1,4 id2,'Апельсин' product2 from dual
union
select 7 rn, 9 id1,'Помидор' product1,3 id2,'Баклажан' product2 from dual
union
select 8 rn, 8 id1,'Слива' product1,6 id2,'Свекла' product2 from dual
union
select 9 rn,8 id1,'Слива' product1,5 id2,'Морковь' product2 from dual
union
select 10 rn,8 id1,'Слива' product1,10 id2,'Клубника' product2 from dual
order by rn
)
select * from products
17 авг 12, 10:23    [13024785]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
env
monomakh
Так как клубника уже встречалась и слива уже встречалась

С чего бы это она уже встречалась?

Ну как же, в первой строке же клубника?
17 авг 12, 10:33    [13024856]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh,

Первой откуда? Почитай про heap organized table
17 авг 12, 10:43    [13024911]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
-2-
monomakh,


row_number() over(partition by Product order by ранее) = 1
and
row_number() over(partition by другойProduct order by тотжеранее) = 1

Это предлагается в where чтоли? Там же запрещено использовать окна.
Варианты где предлагались distinct и group by то же не пойму, особенно учитывая то, что строку нужно отсеивать в том числе, если продукт встречался в атрибуте product2.
17 авг 12, 10:43    [13024912]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
monomakh,

а подзапросы использовать религия не позволяет?
17 авг 12, 10:44    [13024917]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
123йй
Guest
monomakh,

с вашими данными возвращается одна строка
17 авг 12, 10:44    [13024921]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
env
monomakh,

Первой откуда? Почитай про heap organized table

я привел уже select с orderом, считай аля index organized table. В строках с rn меньшей, чем с rn 10 уже встречались и слива и клубника.
17 авг 12, 10:50    [13024957]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
-2-
Member

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

а кросс-колоночные дубли - если в "конец" добавить яблоко, помидор?
17 авг 12, 10:52    [13024985]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
123йй
Guest
-2-,

так он уже дал кросс на исходных данных. Последняя строка
17 авг 12, 10:57    [13025027]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
bev
Member

Откуда: СПб
Сообщений: 143
вы пишете, что "дело в том, что сортировка не важна. Результат имеет право возвращать всегда разные строки, главное, чтобы значения не повторялись в результате."
тогда легитимен и такой вариант ответа:
210Клубника6Свекла
69Помидор4Апельсин
98Слива5Морковь
17 авг 12, 10:59    [13025048]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
-2-
Member

Откуда:
Сообщений: 15330
123йй
-2-,

так он уже дал кросс на исходных данных. Последняя строка
последняя и без кросса дубль
17 авг 12, 10:59    [13025053]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
AmKad
Member

Откуда:
Сообщений: 5222
with products as (
select 1 rn, 10 id1,'Клубника' product1,8 id2,'Слива' product2 from dual
union
select 2 rn, 10 id1,'Клубника' product1,6 id2,'Свекла' product2 from dual
union
select 3 rn,10 id1,'Клубника' product1,5 id2,'Морковь' product2 from dual
union
select 4 rn, 10 id1,'Клубника' product1,2 id2,'Груша' product2 from dual
union
select 5 rn,10 id1,'Клубника' product1,1 id2,'Яблоко' product2 from dual
union
select 6 rn,9 id1,'Помидор' product1,4 id2,'Апельсин' product2 from dual
union
select 7 rn, 9 id1,'Помидор' product1,3 id2,'Баклажан' product2 from dual
union
select 8 rn, 8 id1,'Слива' product1,6 id2,'Свекла' product2 from dual
union
select 9 rn,8 id1,'Слива' product1,5 id2,'Морковь' product2 from dual
union
select 10 rn,8 id1,'Слива' product1,10 id2,'Клубника' product2 from dual
)
select *
from products t1
where not exists
    (select 1
     from products t2
     where t1.rn > t2.rn
     and (t1.product1 in (t2.product1, t2.product2) or t1.product2 in (t2.product1, t2.product2))
    );

        RN        ID1 PRODUCT1        ID2 PRODUCT2
---------- ---------- -------- ---------- --------
         1         10 Клубника          8 Слива
         6          9 Помидор           4 Апельсин

Затрач.время: 00:00:00.04
17 авг 12, 11:02    [13025079]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
123йй
Guest
AmKad,

я так понял из-за
select 1 rn, 10 id1,'Клубника' product1,8 id2,'Слива' product2 from dual

выкидываем Сливу
то почему
select 10 rn,8 id1,'Слива' product1,10 id2,'Клубника' product2 from dual

не выкинули клубнику ?
17 авг 12, 11:07    [13025123]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
monomakh
Member

Откуда: Краснодар
Сообщений: 570
AmKad,

огромное спасибо. Удивительно простым оказался результирующий запрос. :)
17 авг 12, 11:07    [13025125]     Ответить | Цитировать Сообщить модератору
 Re: Убрать повторяющиеся значения из двух столбцов  [new]
bev
Member

Откуда: СПб
Сообщений: 143
monomakh,

а как же мой вопрос?

т.е. либо вы неточно сформулировали поставленную задачу, либо полученный результат выдает только один из вариантов решения...
17 авг 12, 11:13    [13025154]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить