Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UPDATE ile Ikı Tablo da alan guncellemek !!!
#11
(19-12-2018, Saat: 17:19)FiRewaLL Adlı Kullanıcıdan Alıntı: E-Faturada depokodu ve plasiyer kodunun önemi olmaması lazım
E-Faturada Şube kodu,tutar ve kdv doğrusysa gerisi sıkıntı değil

Kaydettiği zaman raporlamada sıkıntı oluyor. Sanırım Update ile iki tablo alanı güncellemek mümkün değil.
Cevapla
#12
Güncellemek Mümkün değil diye bir durum yok orada
Benim sana yazdığım SQL cümlesinde zaten güncelleme yaptırdım ama oradaki yazdığımı tam anlamadın sanırım
STHAR Tablosundaki Plasiyer Kodu kısmı zaten irsaliye Oluşurken dolduruluyor orayı update etmene gerek yok.
FAUIRS tablosunu update etmen yeterli olacaktır
Yazdığım cümleyi deneyerek bir raporlama yaparak bir test edebilirsin.
Cevapla
#13
(19-12-2018, Saat: 18:15)FiRewaLL Adlı Kullanıcıdan Alıntı: Güncellemek Mümkün değil diye bir durum yok orada
Benim sana yazdığım SQL cümlesinde zaten güncelleme yaptırdım ama oradaki yazdığımı tam anlamadın sanırım
STHAR Tablosundaki Plasiyer Kodu kısmı zaten irsaliye Oluşurken dolduruluyor orayı update etmene gerek yok.
FAUIRS tablosunu update etmen yeterli olacaktır
Yazdığım cümleyi deneyerek bir raporlama yaparak bir test edebilirsin.

  FiRewaLL Merhaba Cümlen tamam denedim ayrıca da teşekkür ederim. Ama demek istediğim şu evet giriş yapılıyor kaydediliyor sonra e-fatura olarak gönderiyor, bu durumdan sonra faturanın irsaliyenin de düzeltmek için üzerinden geçirtmiyor. Operatör bakıyor ki "DEPO KODU"  ve "PLASIYER KODU" yanlış bu durumda herhangi bir alandan bilgi alıp update etmek şansı yok bu yüzden ben Delphi de  edit alanları kullanarak update ettiriyorum. Aşağıdaki kod bloğunu tek UPDATE ye indirmek istiyorum.Bunda yardımcı olursan çok sevinirim.

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)+'');
Cevapla
#14
Öncelikle bu iki tabloyu JOIN ile birbirine eşlenik hale getirecek bir SELECT cümlesi yazarak başlayın.

Bunu başardıktan sonra UPDATE ve SET ile atamalı formata dönüştürün.

SET ile verirken benzer alan isimlerine karşı mutlaka her alanın başına TABLE alias kullanın.

JOIN yapılamayacağına kanaat getirirseniz bu isteğiniz de mümkün değildir. Biri hanya diğeri konya demektir .Ama hanya ile konyayı ortak bir paydada yan yana getirebilirseniz UPDATE imkanınız da var demektir .
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#15
Konuyu iki defa okudum bir şey anlamadım ,

* Yazdığın sql kodlarında sql injection davetiye var,
* Tablo adları neden büyük harf okurken gözlerim yoruldu hiç anlaşılır durmuyor rezerv kelimeler büyük olur sadece,
* Aynı anda iki tablo update edeceksen Stored Procedure yaz en mantıklı yolu bu olur ,
* Eğer 2. tablodaki güncellenecek sahalar 1. tabloda var ise , 1. tabloya trigger da yazabilirsin.
WWW
Cevapla
#16
(20-12-2018, Saat: 08:57)mrmarman Adlı Kullanıcıdan Alıntı: Öncelikle bu iki tabloyu JOIN ile birbirine eşlenik hale getirecek bir SELECT cümlesi yazarak başlayın.

Bunu başardıktan sonra UPDATE ve SET ile atamalı formata dönüştürün.

SET ile verirken benzer alan isimlerine karşı mutlaka her alanın başına TABLE alias kullanın.

JOIN yapılamayacağına kanaat getirirseniz bu isteğiniz de mümkün değildir. Biri hanya diğeri konya demektir .Ama hanya ile konyayı ortak bir paydada yan yana getirebilirseniz UPDATE imkanınız da var demektir .
mrmarman dediğin gibi yaptım fakat bir yerde tıkandım düzeltmeni rica etsem kod şu ;
UPDATE TBLFATUIRS SET TBLFATUIRS.PLA_KODU='03',TBLFATUIRS.ACIKLAMA='SONDENEME',SH.DEPO_KODU='02',SH.PLASIYER_KODU='03', TBLCAHAR.PLASIYER_KODU='03'
FROM TBLFATUIRS FI INNER JOIN TBLSTHAR SH INNER JOIN TBLCAHAR ON TBLCAHAR.BELGE_NO=TBLFATUIRS.FATIRS_NO WHERE TBLFATUIRS.PLA_KODU='02' AND TBLFATUIRS.ACIKLAMA='DENEMEDUR' AND TBLFATUIRS.GIB_FATIRS_NO='OLG2018000001185' AND TBLFATUIRS.FATIRS_NO='OLG000000001185' AND TBLFATUIRS.CARI_KODU='000580' AND TBLSTHAR.FISNO='OLG000000001185' AND TBLSTHAR.STHAR_CARIKOD='000580' AND TBLCAHAR.BELGE_NO='OLG000000001185' AND TBLCAHAR.CARI_KOD='000580'
Dediğiniz select cümlesi bu ve çalışıyor;
SELECT FI.PLA_KODU,FI.ACIKLAMA,FI.GIB_FATIRS_NO,FI.FATIRS_NO,FI.CARI_KODU,SH.DEPO_KODU,SH.PLASIYER_KODU,SH.FISNO,SH.STHAR_CARIKOD,CH.PLASIYER_KODU FROM TBLFATUIRS 
FI,TBLSTHAR SH,TBLCAHAR CH 
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'
Cevapla
#17
Yanlış anlamışsınız, join ile select'i kurmalısınız. Bağıntı oluşunca bunu UPDATE haline set edeceksiniz demek istedim.

Buradaki örneği inceleyin isterseniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#18
(20-12-2018, Saat: 22:27)mrmarman Adlı Kullanıcıdan Alıntı: Yanlış anlamışsınız, join ile select'i kurmalısınız. Bağıntı oluşunca bunu UPDATE haline set edeceksiniz demek istedim.

Buradaki örneği inceleyin isterseniz.
Select ile inner joın cumlesını oluşturdum çalışıyor ; Update nasıl cevirecem?
SELECT FI.PLA_KODU,FI.ACIKLAMA,FI.GIB_FATIRS_NO,FI.FATIRS_NO,FI.CARI_KODU,SH.DEPO_KODU,SH.PLASIYER_KODU,SH.FISNO,SH.STHAR_CARIKOD,CH.PLASIYER_KODU
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'
Cevapla
#19
@OZCANK bey,
Form editörümüz üzerinde kod biçimlendirme amacı ile kullandığımız 2 adet buton bulunmaktadır. Delphi Logolu olan (Delphi Kod Ekle) buton ile Delphi kodu, Süslü Parantez simgeli buton (Kod Biçimlendirme) ile de diğer dillere ait (SQL'de dahil) kodlar eklenerek, kod biçimlendirme yapılmaktadır. 
Bu kapsamda;
Daha önce kullanmış olduğunuz [code] taglarını kod biçimlendirme Tag'ları ile değiştirilmiştir.
Sonraki kod kullanımlarında doğru kod tag'larını kullanarak bize yardımcı olursanız sevinirim.
İlgi ve anlayışınız için şimdiden teşekkür eder iyi çalışmalar dilerim.
DelphiCan'dır!
Cevapla
#20
UPDATE Table1
SET Col2 = t2.Col2,
Col3 = t2.Col3
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.Col1 = t2.Col1
WHERE t1.Col1 IN (21, 31)

örneğinde nasıl görüyorsunuz?

Select yerine update yazacaksınız yanına tablo adınızı ve takip eden set dizisini, from ve where gerisi aynı kalacak işte nasıl tarif edebilirim başka bilemiyorum.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Lightbulb Double Alan Karşılaştırma masteryoda 4 5.002 14-08-2017, Saat: 11:14
Son Yorum: masteryoda



Konuyu Okuyanlar: 2 Ziyaretçi