Oracle
 sql >> база данни >  >> RDS >> Oracle

Свържете две таблици с колона с множество записи за другата таблица

Не е толкова трудно, но - както ви беше казано, предпочитате да НЕ правите това.

SQL> with
  2  t1 (pk, info) as
  3    (select 1, 'one' from dual union
  4     select 2, 'two' from dual union
  5     select 3, 'three' from dual
  6    ),
  7  t2 (pk, fkt1) as
  8    (select 1, '1,3' from dual union
  9     select 2, '1,2,3' from dual union
 10     select 3, '2' from dual
 11    ),
 12  t2rows as
 13    (select pk, regexp_substr(fkt1, '[^,]+', 1, column_value) fkt1, column_value rn
 14     from t2,
 15          table(cast(multiset(select level from dual
 16                              connect by level <= regexp_count(fkt1, ',') + 1
 17                             ) as sys.odcinumberlist))
 18    )
 19  select t2r.pk,
 20    listagg(t2r.fkt1, ',') within group (order by t2r.rn) fkt1,
 21    listagg(t1.info, ',') within group (order by t2r.rn) infot1
 22  from t2rows t2r join t1 on t2r.fkt1 = t1.pk
 23  group by t2r.pk
 24  order by t2r.pk;

        PK FKT1                 INFOT1
---------- -------------------- --------------------
         1 1,3                  one,three
         2 1,2,3                one,two,three
         3 2                    two

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между маската за дата "yy" и "rr" на Oracle?

  2. java.lang.UnsatisfiedLinkError:няма ocijdbc11 в java. библиотека.път

  3. Как да намерите дъщерния проект на родителски проект, който се предава в клаузата „WHERE“, а също и да намерите дублиращите се обекти

  4. Как да оптимизирате актуализиращ SQL, който работи на таблица на Oracle със 700 милиона реда

  5. Открийте типове на ниво пакет PL/SQL с помощта на изгледи на речника на Oracle