Arkadaşlar Merhaba ; İki tablom var biri TBLSTHAR diğeri TBLFATUIRS ve bu alanlarda güncelleme yapmak istiyorum. Yardım ederseniz çok sevinirim.
Kod şu şekilde;
UPDATE TBLFATUIRS SET PLA_KODU='02', ACIKLAMA='ACIKLAMA' FROM TBLFATUIRS WHERE EXISTS (SELECT DEPO_KODU='1', PLASIYER_KODU='02' FROM TBLSTHAR WHERE INCKEYNO='81060' AND FATIRS_NO='OLG000000004716' AND GIB_FATIRS_NO='OLG2018000004716' AND CARI_KODU='000499')
fakat bu hatayı veriyor;
Sadece "TBLFATUIRS SET PLA_KODU='02', ACIKLAMA='ACIKLAMA' " bu alanları guncelliyor diğer WHERE EXISTS den sonrasını hiç bakmıyor bile.
Exists'in kullanımı burada yanlış duruyor. Bu tarz update cümlesi yazarken, ben önce select ile bilgileri çekiyorum. İstediğim kayıtların geldiğini görünce update cümlesine çevirmek çok basit iş.
UPDATE TBLFATUIRS SET
PLA_KODU= (SELECT PLASIYER_KODU FROM TBLSTHAR WHERE INCKEYNO='81060' AND FATIRS_NO='OLG000000004716' AND GIB_FATIRS_NO='OLG2018000004716' AND CARI_KODU='000499' )
FROM TBLFATUIRS
WHERE ....
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!
yusuf simsek kardeşim çok teşekkür ederim alakana ama yazmış olduğun sorguyu aşağıdaki şekilde kullanmalıyım çünkü iki ayrı tablodan güncelleme yapıyorum
UPDATE TBLFATUIRS SET PLA_KODU='2',PLASIYER_KODU='2',ACIKLAMA='DENEME' (SELECT PLASIYER_KODU FROM TBLSTHAR WHERE INCKEYNO='81060' AND FATIRS_NO='OLG000000004716' AND GIB_FATIRS_NO='OLG2018000004716' AND CARI_KODU='000499')
PDATE TBLFATUIRS FI JOIN TBLSTHAR ON FI.FATIRS_NO=SH.FISNO SET TBLFATUIRS.PLA_KODU='01', TBLFATUIRS.ACIKLAMA='UPDATE DENEME',
TBLSTHAR.DEPO_KODU='1',TBLSTHAR.PLASIYER_KODU='01'
WHERE
FI.GIB_FATIRS_NO='OLG201800000001' AND FI.FATIRS_NO='OLG000000000001' AND FI.CARI_KODU='0546' AND
SH.DEPO_KODU='01',SH.PLASIYER_KODU='02' AND SH.INCKEYNO='12784' AND SH.FISNO='OLG000000000001' AND SH.STHAR_CARIKOD='0546'
EFatKalem.SQL.Add('UPDATE TBLFATUIRS SET PLA_KODU='+QuotedStr(Edit6.text)+', ACIKLAMA='+QuotedStr(Edit7.text)+' WHERE GIB_FATIRS_NO='+QuotedStr(GibFaturaNo.text)+' AND FATIRS_NO='+QuotedStr(BelgeNo.text)+' AND CARI_KODU='+QuotedStr(CariKodu.text)+'');
EFatKalem.SQL.Add('UPDATE TBLSTHAR SET DEPO_KODU='+QuotedStr(Edit4.text)+', PLASIYER_KODU='+QuotedStr(Edit5.text)+' WHERE FISNO='+QuotedStr(BelgeNo.text)+' AND STHAR_CARIKOD='+QuotedStr(CariKodu.text)+'');
UPDATE TBLFATUIRS
SET FI.PLA_KODU = '03'
,FI.ACIKLAMA = 'SONDENEME'
,SH.DEPO_KODU = '02'
,SH.PLASIYER_KODU = '03'
,TBLCAHAR.PLASIYER_KODU = '03'
FROM TBLFATUIRS FI
INNER JOIN TBLSTHAR SH ON SH.FISNO = FI.FATIRS_NO
INNER JOIN TBLCAHAR CH ON CH.BELGE_NO = SH.FISNO
WHERE FI.PLA_KODU = '03'
AND FI.ACIKLAMA = 'SONDENEME'
AND FI.GIB_FATIRS_NO = 'OLG2018000001185'
AND FI.FATIRS_NO = 'OLG000000001185'
AND FI.CARI_KODU = '000580'
AND SH.DEPO_KODU = '1'
AND SH.PLASIYER_KODU = '01'
AND SH.FISNO = 'OLG000000001185'
AND SH.STHAR_CARIKOD = '000580'
AND CH.BELGE_NO = 'OLG000000001185'
AND CH.CARI_KOD = '000580';
En son ozcank tarafından 21 Ara 2018 08:18 tarihinde düzenlendi, toplamda 1 kere düzenlendi.