Rozdzielenie wartości na pojedyncze rekordy

0

Witam, mam taki rekord :

lp tematyka_glowna tematyki id asortyment_id
8 408 408,33 0005f8604586ef3a9d7b 347212

potrzebuję utworzyć drugą tabelę w które tematyki bedą oddzielnie czyli jeden rekord na tematykę a nie po przecinku tak jak teraz:

lp tematyka_glowna tematyki id asortyment_id
8 408 408 0005f8604586ef3a9d7b 347212
8 408 33 0005f8604586ef3a9d7b 347212

Siedzę już trochę nad tym ale wszystko na nic... W jaki sposób powinienem to zrobić

0

Chcesz do tego użyć tylko bazy danych? Czy możesz wspomóc się jakimś językiem programowania?

0

Czy tematyki (wszystkie) masz w osobnej tabeli?
Jeśli tak, to coś w ten desen: FROM tabela x JOIN tematyki t ON substr(t.id, ',' || x.tematyki ||',')>0

0
Select a.tematyki_nowe, a.tematyka_główna_nowa, tot.tematyki_obecne, a.id, tot.asortyment_id
 from  tematyki_zrodlo a 
JOIN tematyki_obecne_temp tot on tot .indeks_obcy = a.id 

wynik tego Joina tabeli zwraca mi właśnie przykładowy rekord przy czym tematyki są po przecinkach( wynika to z parsowania xml-a i rzutowania do stringa). Chodzi o to że po lewej (tematyki_nowe) mam nowe tematyki dla asortymentu, muszę je podmienić w tot.tematyki_obecne - to zrobię bez problemu, ale potem, mam tabele asortyment_tematyka w której dla każdej tematyki danego asortymentu jest oddzielny rekord, czyli np jeden asortyment może mieć 2 rekordy, bo są 2 tematyki. I tam muszę odpowiednio usunąć tematyki których po update nie będzie już w tot.tematyki_obecne( zostaną zastąpione nowymi tematykiami z kolumny a.teamtyki_nowe) i ewentualnie Insertować nowe tematyki które doszły dla danego asortymentu.

Potrzebny jest mi chyba jakiś kursor który będzie przechodził po każdej tematyce i insertował wiersz do nowej tabeli z pojedyncza tematyką. Ale nie umiem takiego napisać ;/

0

Fiddle wyrzuca mi błędy mimo że działa więc napiszę tutaj :

Przyjmijmy taką sytuacje :

Select at.tematyki, at.tematyka_glowna, at.asortyment_id from asortyment_temp at

zwraca nam to taki przykłądowy wiersz

tematyki tematyka_glowna asortyment_id
696,809 696 438874

teraz trzeba zaktualizować wpisy w tabeli asortyment_tematyka

Select a.asortyment_id, a.tematyka_id, a.glowna from asortyment_tematyka a 

przy czym w asortyment_tematyka, numery tematyk są po przejściu przez drzewo tematyk ( nr tematyk od dostawcy odpowiadają numerom naszych tematyk)

tabela z drzewem przejścia to :

select dt.sl_tematyka_nasza_id dt.dostawca_tematyka_id from drzewo_tematyk dt

sl_tematyka_nasz_id dostawca_tematyka_id
44 696
5 809

tak więc w asortyment_tematyka mamy na ten moment :

Select a.asortyment_id, a.tematyka_id, a.glowna from asortyment_tematyka a 

asortyment_id tematyka_id glowna
438874 43 1

brakuje więc jednego rekordu z tematyką 5

w innych przypadkach może być tak ze rekordów będzie za dużo i będzie trzeba je usunąć.

0

a co jeśli mam 3 rekordy

asortyment_id tematyka
485720 58
485720 58
485720 58

i chciałbym zrobić selecta który zrobi mi z tego 1 kolumne ?
asortyment_id tematyka
485720 58,58,58

W jaki sposob cos takiego wykonac ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1