Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Все возможные сочетания записей / 25 сообщений из 46, страница 1 из 2
31.08.2016, 16:58:01
    #39301321
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Всем добрый день.

Возможно ли запросом получить все возможные сочетания из примерно такой таблицы:

Имеем такой уникальный (по Тип+Код) набор записей:
Тип Код
1 АА
1 ББ
2 ВВ
2 ГГ
2 ДД

Хотелось бы получить следующее:
Тип Код
1 АА
2 ВВ
1 АА
2 ГГ
1 АА
2 ДД
1 ББ
2 ВВ
1 ББ
2 ГГ
1 ББ
2 ДД

Поле Тип может принимать значения от 1 и до к.г. далее.

Спасибо.
...
Рейтинг: 0 / 0
31.08.2016, 17:02:52
    #39301326
xenix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Код: plsql
1.
2.
3.
SELECT A.TYPE,B.CODE
FROM TABLEA A
CROSS JOIN TABLEA B


как-то так?
...
Рейтинг: 0 / 0
31.08.2016, 17:23:00
    #39301341
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
xenix,

по-моему перебор...

SELECT A.TYPE, B.CODE
FROM(
SELECT 1 TYPE, 'АА' CODE FROM DUAL
UNION ALL
SELECT 1, 'ББ' FROM DUAL
UNION ALL
SELECT 2, 'ВВ' FROM DUAL
UNION ALL
SELECT 2, 'ГГ' FROM DUAL
UNION ALL
SELECT 2, 'ДД' FROM DUAL) A
CROSS JOIN (
SELECT 1 TYPE, 'АА' CODE FROM DUAL
UNION ALL
SELECT 1, 'ББ' FROM DUAL
UNION ALL
SELECT 2, 'ВВ' FROM DUAL
UNION ALL
SELECT 2, 'ГГ' FROM DUAL
UNION ALL
SELECT 2, 'ДД' FROM DUAL) B

TYPE CODE

1 АА
1 ББ
1 ВВ
1 ГГ
1 ДД
1 АА
1 ББ
1 ВВ
1 ГГ
1 ДД
2 АА
2 ББ
2 ВВ
2 ГГ
2 ДД
2 АА
2 ББ
2 ВВ
2 ГГ
2 ДД
2 АА
2 ББ
2 ВВ
2 ГГ
2 ДД



чего-то не хватает в условии.
...
Рейтинг: 0 / 0
31.08.2016, 17:24:34
    #39301344
xenix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
в моем предыдущем тресните его distinct-ом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
WITH C(TYPEP,CODE)
  AS
  (
     SELECT 1,'AA'FROM DUAL 
       UNION ALL
     SELECT 1,'BB'FROM DUAL
       UNION ALL 
     SELECT 2,'VV'FROM DUAL 
       UNION ALL
     SELECT 2,'GG'FROM DUAL 
       UNION ALL
     SELECT 2,'DD'FROM DUAL 
  )
SELECT DISTINCT X.TYPEP,X1.CODE
  FROM C X 
  CROSS JOIN C X1
  ORDER BY X.TYPEP;
...
Рейтинг: 0 / 0
31.08.2016, 17:28:36
    #39301348
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
xenix,

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

например: 2 АА

т.е. такие пары Тип+Код которых нет в исходных данных.

%))))
...
Рейтинг: 0 / 0
31.08.2016, 17:33:23
    #39301353
xenix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Тогда я не совсем понял задачу
Код: plsql
1.
2.
3.
4.
5.
6.
WITH C(TYPEP,CODE)
(
  SELECT 1,'AA'FROM DUAL
    UNION ALL
  SELECT 2,'BB'FROM DUAL 
)


что должно быть на выходе?
...
Рейтинг: 0 / 0
31.08.2016, 17:45:54
    #39301366
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
xenix,

WITH C(TYPEP,CODE)
(
SELECT 1,'AA'FROM DUAL
UNION ALL
SELECT 2,'BB'FROM DUAL
)

в данном случае результат нужен такой:

1 АА
2 ВВ

по-моему я в первом посте написал что имеем и что хотим получить.
реальный пример исходных данных и желаемого результата.

Тип Код
1 АА
1 ББ
2 ВВ
2 ГГ
2 ДД

Хотелось бы получить следующее:
Тип Код
1 АА
2 ВВ
1 АА
2 ГГ
1 АА
2 ДД
1 ББ
2 ВВ
1 ББ
2 ГГ
1 ББ
2 ДД

ессно я его нарочно упорядочил для наглядности, что бы были видны т.н. пары.
в данном примере это пары, т.к. в примере тип принимает значения 1 и 2.
но могут быть и "тройки" и "четверки" и т.д.
" Поле Тип может принимать значения от 1 и до к.г. далее. "
...
Рейтинг: 0 / 0
01.09.2016, 04:45:02
    #39301577
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
fetisofxenix,
...


Постановка задачи такая: у автора есть несколько подмножеств строк. Он хочет найти все возможные сочетания элементов разных подмножеств. Причем вывести их не в привычном строчном виде: {{сочетание1, элемент 1 подмножества, элемент 2 подмножества, элемент 3 подмножества...}, ...}, а в виде столбца:
/*сочетания*/{
/*сочетание1*/{
{сочетание 1, элемент 1 подмножества},
{сочетание 1, элемент 2 подмножества},
{сочетание 1, элемент 3 подмножества}, ...
}
/*сочетание2*/{...},....
}

С помощью XML или иерархических запросов это можно сделать.

Но более чем уверен, что в действительности автору нужно что-то другое.
...
Рейтинг: 0 / 0
01.09.2016, 05:23:16
    #39301585
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Найди уникальные КОД.
Найди уникальные ТИП
Потом соедини две эти таблицы

Вот и получятся все возможные комбинации код и тип.
...
Рейтинг: 0 / 0
01.09.2016, 07:08:57
    #39301603
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
982183Вот и получятся все возможные комбинации код и тип.
Да. Но задача другая.
...
Рейтинг: 0 / 0
01.09.2016, 11:49:45
    #39301785
JaRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Ну положим задачу вы описали не очень. Добавьте в свой пример запись :
3 ЕЕ
и расскажите нам, какой вы при этом хотите результат.

Для текущего примера можно в лоб :)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
WITH C(TYPEP,CODE)
  AS
  (
     SELECT 1,'AA'FROM DUAL 
       UNION ALL
     SELECT 1,'BB'FROM DUAL
       UNION ALL 
     SELECT 2,'VV'FROM DUAL 
       UNION ALL
     SELECT 2,'GG'FROM DUAL 
       UNION ALL
     SELECT 2,'DD'FROM DUAL 
  )
select case when mod(rn,2) = 0 then t1.TYPEP else t2.TYPEP end TYPEP,
       case when mod(rn,2) = 0 then t1.CODE else t2.CODE end CODE
from C t1 
 join C t2 partition by (typep) on t2.TYPEP != t1.TYPEP
 join (select 1 rn from dual union all select 2 from dual) rn on 1=1
where  t1.TYPEP = 1
...
Рейтинг: 0 / 0
01.09.2016, 11:54:29
    #39301791
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
AnSi_Sr,

если перейти на конкретику, то есть цвета: Цвет 1, Цвет 2 и т.д., пока их 5.
в примере это типы 1 и 2.
каждый из цветов может принимать различные значения.
в примере это коды.

для каждого артикула заданы списки возможных типов цветов и значений.

но не сразу в виде сочетаний, парами, и т.д., а так как я привел в примере (Тип+Код):
Цвет1 АА
Цвет2 ББ
Цвет2 ВВ
и т.д.

так организованно хранение данных, видимо сделали так что бы не плодить неизвестное кол-во столбцов под каждый тип, кол-во которых может увеличиваться, а сделали "красиво".

хранение хранением, но в реальной жизни суть его это сочетания значений для каждого типа.

выглядеть должно это так:

АА
ББ
АА
ВВ
...
Рейтинг: 0 / 0
02.09.2016, 06:26:43
    #39302400
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
AnSi_Sr982183Вот и получятся все возможные комбинации код и тип.
Да. Но задача другая.
А разве он не просит все возможные комбинации?
...
Рейтинг: 0 / 0
02.09.2016, 06:50:41
    #39302403
не равно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
982183А разве он не просит все возможные комбинации?Он не способен объяснить, но кажется ему нужно размножение строк по количеству противоположного типа, то есть банальный антижоин по типу и вывод только одной стороны.
...
Рейтинг: 0 / 0
02.09.2016, 08:16:50
    #39302424
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Он же говорит, есть цвет и есть артикул.
И ему нужны все сочетания цветов и артикулов.

Например:
Если есть три цвета и три артикула, то есть девять сечетаний
А1 Ц1
А1 Ц2
А1 Ц3
А2 Ц1
А2 Ц2
А2 Ц3
А3 Ц1
А3 Ц2
А3 Ц3

Так?
...
Рейтинг: 0 / 0
02.09.2016, 15:35:49
    #39302780
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
не равно,

да я не могу сказать как то что мне нужно получить назвать одним научным термином.

я могу привести еще сколько угодно примеров исходных данных и однозначного ожидаемого результата.

я думаю от того как это будет называться, никому легче не станет.

нужен результат, а не терминология.
...
Рейтинг: 0 / 0
02.09.2016, 15:43:22
    #39302788
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
982183,

забудьте вы про артикулы, это было описание сути вещей.

вот вам конкретный пример:
Имеем:
Цвет1 АА
Цвет2 ББ
Цвет2 ВВ

нужно ОДНОЗНАЧНО получить следующее:

Цвет1 АА
Цвет2 ББ
----------
Цвет1 АА
Цвет2 ВВ

вот еще пример пошире:

Цвет1 АА
Цвет2 ББ
Цвет2 ВВ
Цвет3 ГГ

нужно ОДНОЗНАЧНО получить следующее:

Цвет1 АА
Цвет2 ББ
Цвет3 ГГ
----------
Цвет1 АА
Цвет2 ВВ
Цвет3 ГГ

для наглядности группы разделил ------------, ессно это в результирующем наборе не нужно.

достаточно примеров?
...
Рейтинг: 0 / 0
02.09.2016, 16:08:43
    #39302803
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
fetisofвот вам конкретный пример:
Имеем:
Цвет1 АА
Цвет2 ББ
Цвет2 ВВ

нужно ОДНОЗНАЧНО получить следующее:

Цвет1 АА
Цвет2 ББ
----------
Цвет1 АА
Цвет2 ВВ



Что такое ----------

"Все возможные сочетания записей " в этом случае будет:
Цвет1 АА
Цвет1 ББ
Цвет1 ВВ
Цвет2 АА
Цвет2 ББ
Цвет2 ВВ
...
Рейтинг: 0 / 0
02.09.2016, 16:11:17
    #39302808
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
fetisof982183,

вот еще пример пошире:

Цвет1 АА
Цвет2 ББ
Цвет2 ВВ
Цвет3 ГГ

нужно ОДНОЗНАЧНО получить следующее:

Цвет1 АА
Цвет2 ББ
Цвет3 ГГ
----------
Цвет1 АА
Цвет2 ВВ
Цвет3 ГГ


А почему не

Цвет1 АА
Цвет1 ББ
Цвет1 ВВ
Цвет1 ГГ
Цвет2 АА
Цвет2 ББ
Цвет2 ВВ
Цвет2 ГГ
Цвет3 АА
Цвет3 ББ
Цвет3 ВВ
Цвет3 ГГ
...
Рейтинг: 0 / 0
02.09.2016, 16:12:13
    #39302809
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
КАкие такие "группы" ты отделяешь ---------
...
Рейтинг: 0 / 0
02.09.2016, 16:17:42
    #39302812
xenix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
автор"Все возможные сочетания записей " в этом случае будет:
Цвет1 АА
Цвет1 ББ
Цвет1 ВВ
Цвет2 АА
Цвет2 ББ
Цвет2 ВВ

по Вашему описанию желаемого результата у меня получилось так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH COLOURS(COLOUR,TYPEP)AS
  (
    SELECT 'COLOUR1','AA'FROM DUAL 
       UNION ALL
    SELECT 'COLOUR2','BB'FROM DUAL  
       UNION ALL
    SELECT 'COLOUR2','VV'FROM DUAL
  ),
DISTINCTCOLOURS AS
  (
    SELECT DISTINCT COLOUR 
     FROM COLOURS
  ),
DISTINCTTYPES AS
  (
    SELECT DISTINCT TYPEP 
     FROM COLOURS
  )
SELECT DC.COLOUR,DT.TYPEP
  FROM DISTINCTCOLOURS DC
  CROSS JOIN DISTINCTTYPES DT
 ORDER BY DC.COLOUR,DT.TYPEP;
...
Рейтинг: 0 / 0
02.09.2016, 16:26:11
    #39302821
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
Это тот вариант, который я ему предложил.
Он же утверждает, что группировка должна быть несколько другая.
...
Рейтинг: 0 / 0
02.09.2016, 16:49:16
    #39302842
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
fetisof, оно?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as  (
             select 1 a,'АА' b from dual 
               union all
             select 1,'ББ'from dual
               union all 
             select 2,'ВВ'from dual 
               union all
             select 2,'ГГ'from dual 
               union all
             select 2,'ДД'from dual 
             )
select t1.* from t t1 cross join t t2 
where t1.a<>t2.a
...
Рейтинг: 0 / 0
02.09.2016, 16:57:25
    #39302846
fetisof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
982183,

я же написал что это:

"для наглядности группы разделил ------------, ессно это в результирующем наборе не нужно."

я не знаю как еще понятнее написать что это...
...
Рейтинг: 0 / 0
02.09.2016, 16:58:15
    #39302848
bishnike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все возможные сочетания записей
j2k,

а вы пробовали тестировать?
ожидания у ТС другие
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as  (
             select 'Цвет1' a,'АА' b from dual 
               union all 
             select 'Цвет2','ББ'from dual 
               union all
             select 'Цвет2','ВВ'from dual 
               union all
             select 'Цвет3','ГГ'from dual 
             )
select t1.* from t t1 cross join t t2 
where t1.a<>t2.a


Или "А я... угадаю эту мелодию с 3х нот" :D
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Все возможные сочетания записей / 25 сообщений из 46, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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