[ ik0 @ 16.08.2016. 13:46 ] @
Najlakse je da objasnim primerom...

Imam Tabela0 [ID],[Ime],[Prezime]
Tablea1 koja ima [Tabela0ID], [RoleID]
Relacija je jedan prema mnogo (za Jedno ime i prezime moze da ima mnogo Role)

Trebam da migriram u tabelu Tabela2 [ID],[Ime],[Prezime],[RoleID]

Problem je sto u novu tabelu imam samo jedno polje a u staru tabelu za jedan zapisi imam i po 10 zapisa. Fali mi logika kako da izvedem kad dobijem vise od jedan zapis i ako taj zapis je recimo u IN(10,22,34,78) na mesto sve to zapisi 1...koristio sam WHEN ali tad trebam da upisem tacan uslov sto znaci da ne pomaze. Ikakva ideja ili pomoc...evo deo koda. Hvala


Code:

DECLARE @EntityRepresentationID TABLE(
       ID int,
       OldID int);

INSERT INTO @EntityRepresentation
SELECT ua.usr_user_pk, ua.usr_description, 
       (SELECT TOP 1 ID FROM @EntityID WHERE OldID = ua.usr_pty_user_party_fk),
       (SELECT TOP 1 ID FROM @EntityID WHERE OldID = ua.usr_pty_represented_party_fk),
       ua.usr_status, ua.usr_create_timestamp, ua.usr_last_update_timestamp, ua.usr_read_terms, ua.usr_read_timestamp, 

       CASE WHEN ur.[usl_rle_role_fk] IN (103, 102, 53) THEN 1 WHEN ur.[usl_rle_role_fk] = 49 THEN 2 WHEN ur.[usl_rle_role_fk] = 50 THEN 3 ELSE NULL END

FROM [SRV_STANDARDDB].EAPPS.dbo.tb_user_account ua
LEFT OUTER JOIN [SRV_STANDARDDB].EAPPS.dbo.tb_user_role ur ON (ua.usr_user_pk = ur.[usl_usr_user_fk] AND ur.[usl_rle_role_fk] IN (103, 102, 53, 49, 50))
WHERE usr_pty_user_party_fk != 0


[ dava @ 07.09.2016. 13:59 ] @
Ta nova tabela ti nije dobro dizajnirana. Ako baš mora tako onda ili da u novoj tabeli imaš ponavljanje imena i prezimena

ime prez RolaID
------------------------
Pera Perić rola01
Pera Perić rola02
Pera Perić rola04
Miki Mikić rola01
Miki Mikić rola03

ili da ti u novoj tabeli polje RoleID bude nekog tekstualnog tipa pa da vodiš ovako:

ime prez RolaID
-----------------------
Pera Perić rola01, rola02, rola04
Miki Mikić rola01, rola03


U svakom slučaju predhodni dizajn je bio bolji.