Selam,
Elimde iki tablo var ANA_TABLO, DIL_BILGILERI . Seçtiğim tablodaki bir sütun değerlerini baz alarak, diğer bir tabloda bulunan verileri güncellemek istiyorum.
Mesela; ANA_TABLO tablosunda “DILLER” sütunu var. Bu alanı farklı dilleri içeriyor Türkçe, İngilizce, Almanca vs. Ben bunun kısa kod şekilde tutulmasını istiyorum. Türkçe –> TR, İngilizce–>EN şeklinde yani. İkinci tablom olan DIL_BILGILERI hangi dilin hangi koda denk geldiğini tutmaktadır. Bu nedenle DIL_BILGILERI tablosunu kullanarak ANA_TABLO tablosundaki tüm “DILLER” sütununu güncellemek istiyorum. Nasıl yapabilirim.
ANA_TABLO daki güncellemek istediğim sütun değerleri aşağıdaki gibi
DILLER
———-
Turkce
Ingılızce
Almanca
….
Elimde aynı zamanda bir tanım tablosu var dil seçenekleri için (DIL_BILGILERI olsun),
KOD AD
—————-
TR TURKCE
EN Ingilizce
DE ALMANCA
[Güncellendi ]Öncelikle eğer match etmeye calıştığımızda data içinde boşluk filan var mı diye bir trim() yaptım, sonrasında büyük küçük harf için sensitive olduğu için de karşılaştırıken de sana önerim hem tanım tablosundaki baz aldığın sutün değeri ile senin güncellemek istedin sütun değerlerini UPPER() ya da LOWER() ile karşılaştırmak gerekmektedir. Bunlarıda en son bir FOR döngüsüne alabilirz.
UPDATE ANA_TABLO at SET at.DILLER = ( SELECT dd.KOD FROM DIL_BILGILERI dd WHERE trim(upper(dd.AD)) = trim(upper(at.DILLLER)) )VEYA
UPDATE ANA_TABLO at SET at.DILLER = dd.KOD FROM DIL_BILGILERI dd WHERE trim(upper(dd.AD)) = trim(upper(at.DILLLER))stackoverflow örnekleri ;
http://stackoverflow.com/questions/1068447/update-with-two-tables
http://stackoverflow.com/questions/2815953/update-query-with-join-on-two-tables
http://stackoverflow.com/questions/7030699/oracle-sql-update-a-table-with-data-from-another-table
Else-if kullanarak update demişsin, fakat kod içinde ne if ne else var 🙂
Yanlış bir soru/cevap oldu herhalde.
güncellemek istediğim bir tabloyu , 2 farklı tabloyu baz alarak değişiklik yapmak istemiştim, şu şekilde çözdüm;
UPDATE ANA_TABLO MA SET MA.DILLER = (SELECT CO.KOD FROM DIL_BILGILERI CO WHERE CO.CODE = MA.COUNTRY) WHERE EXISTS (SELECT MA.TEST_ID FROM THIRD_TABLE RR WHERE MA.TEST_ID = TO_CHAR(RR.TEST_ID))