Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
İlişkili veya iki tablo arasında güncelleme nasıl yapılır?

Açık 2 Cevaplar 3456 Gösterim Veri Tabanı

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

2 Cevap

0

[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

(2k puan)
düzenledi
1Yorumlar
(4.8k puan)
Else-if kullanarak update demişsin, fakat kod içinde ne if ne else var :)

Yanlış bir soru/cevap oldu herhalde.
0

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))

 

(2k puan)
düzenledi