Potrebna pomoć (code)

Radi se o mysql bazi.
U tablici (tbl2) dodana nova kolumna (col4) koju treba popuniti (insert) vrijednošću iz tbl1.col4.

Uvjet je:

if
(tbl1.col1=tbl2.col1 and tbl1.col2=tbl2.col2 and tbl1.col3=tbl2.col3)
{insert tbl1.col4 into tbl2.col4}

Olakšavajuća okolnost je da ni u jednoj tablici nemaju dva istovjetna recordsa sa sva tri uvjeta.

phh

Potrebna pomoć kako to rješiti.
Hvala

Update tbl2 set col4 =(select col4 from tbl1 where
tbl1.col1=tbl2.col1 and tbl1.col2=tbl2.col2 and
tbl1.col3=tbl2.col3) and (tbl2.col1, tbl2.col2, tbl2.col3) in ( select col1, col2, col3 from tbl1)

Pisem napamet sa moba, provjeri da li radi.

To se radi sa jednim updatom.

1 Like

Probaj ovo, kod mene radi, ALI je jedan uvjet, kod tebe sam pokušao postaviti tvoja 2 uvjeta

UPDATE tbl2 INNER JOIN tbl1 ON [tbl2].[col4] = [tbl1].[col4] SET [tbl2].[col4] = [tbl1].[col4] AND [tbl1].[col3] = [tbl2].[col3]

1 Like

Nije uspjelo - upisao mi je vrijednost “1” u sve retke tbl2.col4.
Inače, tbl1.col4 je “id” broj (unique).

Nije uspjelo: “0 rows affected”.

UPDATE tbl2 
SET tbl2.col4 = (SELECT col4 FROM tbl1 WHERE 
tbl1.col1 = tbl2.col1 AND
tbl1.col2 = tbl2.col2 AND
tbl1.col3 = tbl2.col3)
1 Like

Probaj ovako

UPDATE  tbl2 b
    INNER JOIN tbl1 a
        ON b.col1 = a.col1
        AND b.col2 = a.col2
        AND b.col3 = a.col3
SET b.col4 = a.col4
2 Likeova

uspio:

UPDATE tbl2 SET col4 =(select tbl1.col4 from tbl1 where tbl1.col1=tbl2.col1 and tbl1.col2=tbl2.col2 and tbl1.col3=tbl2.col3)

Hvala obadvojici

2 Likeova

Inače, mislim da oba koda uredno rade ono što trebaju. JOIN bi trebao biti malo brži, ali je meni iz nekog razloga subquery čitljiviji pa ga koristim za ovakve jednokratne upite kad par milisekundi ne čini razliku.

2 Likeova

I meni je tvoj kod čitljiviji.
Moguće da bi trebalo da može i sa CASE WHEN i čini mi se da bi tako bilo još i najbrže osim ako tabele nisu identične pa bi onda najbrže bilo brisanje tabele b i kopiranje a.

1 Like

Pogrijesio sam.
Umjesto drugog and je trebao biti where.
Napisao sam da pisem sa moba,pa mi je malo tesko.

Ovaj drugi uvjet je osiguranje, ako u drugoj tablici postoji zapis, a u prvog ga nema, da ne update-a kolonu na null, ako postoji vec neka neka vrijednost.