powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Все возможные сочетания записей
25 сообщений из 46, страница 1 из 2
Все возможные сочетания записей
    #39301321
fetisof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

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

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

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

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

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


как-то так?
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #39301348
fetisof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xenix,

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

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

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

%))))
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #39301577
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fetisofxenix,
...


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

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

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

Вот и получятся все возможные комбинации код и тип.
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #39301603
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Вот и получятся все возможные комбинации код и тип.
Да. Но задача другая.
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #39301791
fetisof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AnSi_Sr,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

"Все возможные сочетания записей " в этом случае будет:
Цвет1 АА
Цвет1 ББ
Цвет1 ВВ
Цвет2 АА
Цвет2 ББ
Цвет2 ВВ
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #39302809
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КАкие такие "группы" ты отделяешь ---------
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
Все возможные сочетания записей
    #39302821
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тот вариант, который я ему предложил.
Он же утверждает, что группировка должна быть несколько другая.
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #39302842
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
Все возможные сочетания записей
    #39302846
fetisof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

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

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

я не знаю как еще понятнее написать что это...
...
Рейтинг: 0 / 0
Все возможные сочетания записей
    #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
25 сообщений из 46, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Все возможные сочетания записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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