Salut à tous !
Ca fait quelques jours que je me casse la tête sur une requête assez balèze qui ne passe pas...
J'ai parcouru les forums à la recherche d'une solution, mais toutes celles essayées ne fonctionnent pas.
La requête doit faire un update sur le résultat d'un select impliquant plusieurs jointures. Voilà mon meilleur résultat pour le moment :
J'ai une erreur qui me dit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 UPDATE ( SELECT a.resource_type to_update FROM ps_Proj_Resource p INNER JOIN PS_KK_SOURCE_HDR h on p.PROCESS_INSTANCE = h.PROCESS_INSTANCE INNER JOIN PS_KK_SOURCE_LN l on h.kk_tran_id = l.kk_tran_id INNER JOIN PS_KK_ACTIVITY_LOG a on h.kk_tran_id = a.kk_tran_id WHERE ((p.DEPTID = '1137' AND p.project_id = '12000086' AND p.voucher_id in ('00017612','00017610','00017614','00017615','00017613','00017016','00017017','00017015','00017019','00017020','00017018','00019238', '00019239','00019237','00019241','00019242','00019240','00018753','00018754','00018752','00018756','00018757','00018755','00014099', '00014098','00014100','00014096','00014095','00014097','00016272','00016271','00016273','00016269','00016268','00016270')) OR (p.DEPTID = '1136' AND p.project_id = '12000102' AND p.voucher_id in ('00014688','00014093','00014690','00014689','00014090','00014089','00014092','00014091','00015824','00015825','00015823','00015827', '00015826','00014692','00014691','00015822','00014693','00012379','00017013','00017014','00017012','00012380','00012377','00017010', '00012378','00017009','00013006','00013005','00013008','00013007','00017011','00012381','00013004','00013003'))) AND p.resource_type = ' ' AND a.resource_type = ' ' AND a.project_id != 'NA' AND l.project_id != 'NA' AND a.ledger_group = 'ANA') SET to_update = '143'ORA-01779: cannot modify a column which maps to a non key-preserved table.Help !!
Bon j'ai trouvé en fait, pas si compliqué :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 UPDATE PS_KK_ACTIVITY_LOG SET resource_type = '143' WHERE kk_tran_id in ( SELECT a.kk_tran_id FROM ps_Proj_Resource p INNER JOIN PS_KK_SOURCE_HDR h on p.PROCESS_INSTANCE = h.PROCESS_INSTANCE INNER JOIN PS_KK_SOURCE_LN l on h.kk_tran_id = l.kk_tran_id INNER JOIN PS_KK_ACTIVITY_LOG a on h.kk_tran_id = a.kk_tran_id WHERE ((p.DEPTID = '1137' AND p.project_id = '12000086' AND p.voucher_id in ('00017612','00017610','00017614','00017615','00017613','00017016','00017017','00017015','00017019','00017020','00017018','00019238', '00019239','00019237','00019241','00019242','00019240','00018753','00018754','00018752','00018756','00018757','00018755','00014099', '00014098','00014100','00014096','00014095','00014097','00016272','00016271','00016273','00016269','00016268','00016270')) OR (p.DEPTID = '1136' AND p.project_id = '12000102' AND p.voucher_id in ('00014688','00014093','00014690','00014689','00014090','00014089','00014092','00014091','00015824','00015825','00015823','00015827', '00015826','00014692','00014691','00015822','00014693','00012379','00017013','00017014','00017012','00012380','00012377','00017010', '00012378','00017009','00013006','00013005','00013008','00013007','00017011','00012381','00013004','00013003'))) AND p.resource_type = ' ' AND a.resource_type = ' ' AND a.project_id != 'NA' AND l.project_id != 'NA' AND a.ledger_group = 'ANA') AND resource_type = ' ' AND project_id != 'NA' AND ledger_group = 'ANA'
Partager