i have 2 tables, card list of cardlines associated it
card (unique: code, key) ---- id | code | key cardline (fk: cardid, unique: cardid, subkey) ---- id | cardid | value | subkey
consider data
card ---- id | code | key 1 | c1 | k1 2 | c2 | k1 3 | c3 | k2 cardline ---- id | cardid | value | subkey 1 | c1 | 10 | sk1 2 | c1 | 20 | sk2 3 | c2 | 30 | sk1 4 | c2 | 40 | sk3 5 | c3 | 50 | sk4
here, in card table, c2 needs converted c1 (as c2 incorrect entry, should have been c1). this, trying write merge query, in, if match, need run sub-query merge cardlines every match. (pseudo-code)
merge card target using (select id, code, key card code = 'c2') on (target.code = 'c1' , target.key = k1) when match -- merge cardlines in similar mananner matched card (subquery?) - -- delete card if no more lines assigned after merge when not match -- update code c2 -> c1
desired output is
card ---- id | code | key 1 | c1 | k1 3 | c3 | k2 cardline ---- id | cardid | value | subkey 1 | c1 | 40 | sk1 <-- merge of cardline id=1 , id = 3, 3 deleted 2 | c1 | 20 | sk2 4 | c1 | 40 | sk3 <-- no merge required, product code update c1 c2 5 | c3 | 50 | sk4
am not sql expert (.net), if not right approach, appreciate right direction
Comments
Post a Comment