update hakkinda
update hakkinda
iki tane table var.iki table aynı alana sahip ama birincisine devamlı verı gırılıyor.ve dıgerı duragan yanı ilk çalıştıgı zamankı verıler mevcut.ben update ile bu ikinci tabloma birinci tablomdaki gunel verılerı cekebılıırm ama oyle bır sey yazmalıyım kı aynı kayıtlar gelmesın.mesela
birinci table ikinci table
ad ucret ad ucret
ismail 1 ismail 1
hakan 2 hakan 2
ismail 3 selami 8
ozan 2
özlem 5
seklinde ikinci table alanlarını bozmadan birinci table dekı verılerı alabıleyım
birinci table ikinci table
ad ucret ad ucret
ismail 1 ismail 1
hakan 2 hakan 2
ismail 3 selami 8
ozan 2
özlem 5
seklinde ikinci table alanlarını bozmadan birinci table dekı verılerı alabıleyım
Eğer aynı adları almak istemiyorsan,
WHERE ifadesi tablo2 de olmayan adları tablo1 den almanı sağlar.
Kod: Tümünü seç
INSERT INTO TABLO2 (AD,UCRET)
SELECT AD,UCRET FROM TABLO1
WHERE AD NOT IN (SELECT AD FROM TABLO2)
program içerisinde nasıl yaparım
query1.first;
while not query1.eof do
begin
table1.insert;
table1.FieldByName('ref').asstring:=query1.FieldByName('itnbr').asstring;
table1.Post;
query1.next;
end;
şeklinde birinci sorguda aldırıyorum.insert ifadesini nasıl yazabılırım.
benım bu yaptıgımda kayıtları lıyor ıkıncıye calıstırdıgımda bastan ıtıbaren olmayan kayıtlarıda alıyor.yanı ilkınde 100 kayıt olsun bunu table yazdırıyorumikikincisinde 110 olunca yaz dedegımde 210 kayıt oluyor yanı farklı olanları aldırmak ve yazdırmak ıstıyorum.
while not query1.eof do
begin
table1.insert;
table1.FieldByName('ref').asstring:=query1.FieldByName('itnbr').asstring;
table1.Post;
query1.next;
end;
şeklinde birinci sorguda aldırıyorum.insert ifadesini nasıl yazabılırım.
benım bu yaptıgımda kayıtları lıyor ıkıncıye calıstırdıgımda bastan ıtıbaren olmayan kayıtlarıda alıyor.yanı ilkınde 100 kayıt olsun bunu table yazdırıyorumikikincisinde 110 olunca yaz dedegımde 210 kayıt oluyor yanı farklı olanları aldırmak ve yazdırmak ıstıyorum.
Selamlar,
Bu başımdan geçen bir tecrübe, Microsoft SQL Server'da query'de
gibi bir kullanımdan çok daha hızlısı
şeklindeki bir kullanımdır
Bunu Microsoft'tan birilerine gösterdiğimde onlar da şaşırmışlardı
Sorgulamanın birinde query NOT IN yapılıyor, (Tersleniyor) diğerinde Sonuçta çıkan T/F değer NOT'lanıyor. Yazdığım ikinci metodla çok daha hızlı sorgulama yapılabiliyor
İlginç değil mi?
Kolay Gelsin.
Bu başımdan geçen bir tecrübe, Microsoft SQL Server'da query'de
Kod: Tümünü seç
WHERE ALAN1 NOT IN (SELECT ALAN5 FROM TABLO3)
Kod: Tümünü seç
WHERE NOT (ALAN1 IN (SELECT ALAN5 FROM TABLO3))

Bunu Microsoft'tan birilerine gösterdiğimde onlar da şaşırmışlardı

Sorgulamanın birinde query NOT IN yapılıyor, (Tersleniyor) diğerinde Sonuçta çıkan T/F değer NOT'lanıyor. Yazdığım ikinci metodla çok daha hızlı sorgulama yapılabiliyor

İlginç değil mi?
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Ben biraz daha öncesinden yaklaşmak istiyorum.
Acaba Normalizasyondan uzaklaşan bir çözüm yapılmış olabilir mi?
2. tablonun içeriği birinci tablodan elde edilebiliyorsa, 2. tablo bilgilerinin yeniden 1. tabloya girilmesi için çok makul bir açıklama olmalı. Lütfen açıklar mısınız?
Bu cevaba göre belki de çözüm SQL cümlesinden değil, Tablo ilişkilerinden (belki de daha tutarlı bir şekilde) gelebilir.
Kolay Gelsin,
Acaba Normalizasyondan uzaklaşan bir çözüm yapılmış olabilir mi?
2. tablonun içeriği birinci tablodan elde edilebiliyorsa, 2. tablo bilgilerinin yeniden 1. tabloya girilmesi için çok makul bir açıklama olmalı. Lütfen açıklar mısınız?
Bu cevaba göre belki de çözüm SQL cümlesinden değil, Tablo ilişkilerinden (belki de daha tutarlı bir şekilde) gelebilir.
Kolay Gelsin,
arkadaşlar yanlış yapıyorum anlaşılan
aşağıdaki gibi kod yazdım ama olmadı bir şeyleri yanlış yapıyor olmalıyım yarıdmlarınız için tşkr ederim.
query1.Close;
query1.SQL.clear;
query1.SQL.add('insert into deneme1.db ad,ucret');
query1.SQL.add('select ad,ucret from deneme.db');
query1.SQL.add('where ad not in (select ad from deneme1.db)');
query1.open;
query1.Close;
query1.SQL.clear;
query1.SQL.add('insert into deneme1.db ad,ucret');
query1.SQL.add('select ad,ucret from deneme.db');
query1.SQL.add('where ad not in (select ad from deneme1.db)');
query1.open;
asıl yapmak isteğim
iki tane database var (deneme.db ve deneme1.db).birinci databasedeki verilerin hepsini ikinci database indiriyorum.burada sorun yok.fakat birinci database veri girisi yapılıyor.dolayısıyla ikinci database guncel olmuyor.güncel olabilmesi için birinci database e bağlanıp verilerimi guncellemk yapmak istiyorum.ikinci database i silmeden ve kayıtlarını degıstırmeden.yani öyle bir sql yapmalıyım kı birinci ve ikinciyi karsılastıracak olmayan alanları ılave edecek ve olanların da ılgılı alanlarını uzerıne yazacak ve toplam alacak.netıcede ıkı tablo aynı olmalı
triggerı nasıl kullanırı ve nedır
nasıl kullanılır ve nedır?
Ben gene biraz daha önceden bakacağım. Bu, zaman zamam bu sinir bozucu bir durum olabilir, biliyorum. Tam da neye ihtiyacınız olduğunu bilip ararken, başka birilierinin "ama bunu neden yapıyorsun" demesi ve bunu yeniden cevaplamak için zaman harcamak pek de hoş olmayabilir. Bana çok yardımcı olmuş bir yaklaşımı aktarmak istiyorum. Problemler, kendilerini yaratan düzlemde çözülemezler. (Ya çok zorlamak lazım ya da zaten kendini üretmeye devam eder). Bu yüzden, şu aracı kullanın, şunu yazın demekten biraz önce, aslında neyi yapmak istediğinizi soruyorum. Yani amacınız sadece ikinci bir veritabanını yedek olarak tutmak mı, yoksa ikincisini süzülmüş bir bilgi demeti olarak başka bir şekilde mi kullanıyorsunuz ? Eğer daha geri adımlardan başlayarak yaklaşmayı uygun bulmuyorsanız, bu noktadan da devam edebiliriz. Fakat gene de orijinal ihtiyacı her zaman için göz önünde bulundurmak, sıkışık bir çözüm için araçlar arama yolunda kaybolmak riskini oldukça hafifletir ve ömenli bir görüş avantajı kazandırabilir. En azından benim için böyle oluyor. Bu yüzden hep orijinal ihtiyacı sorgulayan yaklaşımımı anlayışla karşılayacağınızı umarım.
Aklıma gelen bir iki noktayı hemen aktarıyorum:
1. İki datayı da aynı anda girmek. Böylece sonradan güncellemenize gerek kalmaz.
2. İkinci veri tabanına taşınan bilgileri, 1. veri tabanında işaretlemek. Bir sonraki sorgulamayı sadece işaretsizler üzerinde uygulamak.
Kolay Gelsin,
Aklıma gelen bir iki noktayı hemen aktarıyorum:
1. İki datayı da aynı anda girmek. Böylece sonradan güncellemenize gerek kalmaz.
2. İkinci veri tabanına taşınan bilgileri, 1. veri tabanında işaretlemek. Bir sonraki sorgulamayı sadece işaretsizler üzerinde uygulamak.
Kolay Gelsin,
sayın şafak
kısaca söyle acıklıyayım.iki tane database var.bunlar
1.database (guncel.db)
ref op mik tar hat
10 1 5 2003 pres
20 1 4 2003 pres
20 2 5 2003 pres
30 1 6 2003 pres
şeklinde
2.database (ongoru.db)
ref op mik tar hat ongoru
10 1 4 2003 pres 5
20 1 4 2003 pres 3
20 2 1 2003 pres 2
sonuc olarak baska bır database e (ortak.db)
ref op mik tar hat ongoru
10 1 5 2003 pres 5
20 1 4 2003 pres 3
20 2 5 2003 pres 2
30 1 6 2003 pres
şeklinde yazdırmak istiyorum.
program sql kodu nasıl yazmalıyım.
1.database (guncel.db)
ref op mik tar hat
10 1 5 2003 pres
20 1 4 2003 pres
20 2 5 2003 pres
30 1 6 2003 pres
şeklinde
2.database (ongoru.db)
ref op mik tar hat ongoru
10 1 4 2003 pres 5
20 1 4 2003 pres 3
20 2 1 2003 pres 2
sonuc olarak baska bır database e (ortak.db)
ref op mik tar hat ongoru
10 1 5 2003 pres 5
20 1 4 2003 pres 3
20 2 5 2003 pres 2
30 1 6 2003 pres
şeklinde yazdırmak istiyorum.
program sql kodu nasıl yazmalıyım.
Re: sayın şafak
rapsodim yazdı:kısaca söyle acıklıyayım.iki tane database var.bunlar
1.database (guncel.db)
ref op mik tar hat
10 1 5 2003 pres
20 1 4 2003 pres
20 2 5 2003 pres
30 1 6 2003 pres
şeklinde
2.database (ongoru.db)
ref op mik tar hat ongoru
10 1 4 2003 pres 5
20 1 4 2003 pres 3
20 2 1 2003 pres 2
sonuc olarak baska bır database e (ortak.db)
ref op mik tar hat ongoru
10 1 5 2003 pres 5
20 1 4 2003 pres 3
20 2 5 2003 pres 2
30 1 6 2003 pres
şeklinde yazdırmak istiyorum.
program sql kodu nasıl yazmalıyım.
Kod: Tümünü seç
INSERT INTO ORTAK.DB (REF,OP,MIK,TAR,HAT,ONGORU)
SELECT T1.REF,T1.OP,T1.MIK,T1.TAR,T1.HAT,T2.ONGORU
FROM guncel.db T1, ongoru.db T2
WHERE T1.REF=T2.REF
AND T1.OP.T2.OP
AND T1.TAR=T2.TAR
SELECT olarak :
SELECT GUNCEL.REF, GUNCEL.OP, GUNCEL.MIK, GUNCEL.TAR, GUNCEL.HAT, ONGORU.ONG
FROM ONGORU RIGHT OUTER JOIN GUNCEL ON
(ONGORU.REF = GUNCEL.REF) AND
(ONGORU.OP = GUNCEL.OP)
-----------------------------------------------------------------------
INSERT için: (Öce tabloyu boşaltmayı unutmayın)
INSERT INTO ORTAK (REF,OP,MIK,TAR,HAT,ONG)
SELECT GUNCEL.REF, GUNCEL.OP, GUNCEL.MIK, GUNCEL.TAR, GUNCEL.HAT, ONGORU.ONG
FROM ONGORU RIGHT OUTER JOIN GUNCEL ON
(ONGORU.REF = GUNCEL.REF) AND
(ONGORU.OP = GUNCEL.OP)
------------------------------------------------------------------------
ONGORU dosyasını (REF,OPT) anahtarına göre indexli tutmanızı öneririm
Kolay Gelsin,
SELECT GUNCEL.REF, GUNCEL.OP, GUNCEL.MIK, GUNCEL.TAR, GUNCEL.HAT, ONGORU.ONG
FROM ONGORU RIGHT OUTER JOIN GUNCEL ON
(ONGORU.REF = GUNCEL.REF) AND
(ONGORU.OP = GUNCEL.OP)
-----------------------------------------------------------------------
INSERT için: (Öce tabloyu boşaltmayı unutmayın)
INSERT INTO ORTAK (REF,OP,MIK,TAR,HAT,ONG)
SELECT GUNCEL.REF, GUNCEL.OP, GUNCEL.MIK, GUNCEL.TAR, GUNCEL.HAT, ONGORU.ONG
FROM ONGORU RIGHT OUTER JOIN GUNCEL ON
(ONGORU.REF = GUNCEL.REF) AND
(ONGORU.OP = GUNCEL.OP)
------------------------------------------------------------------------
ONGORU dosyasını (REF,OPT) anahtarına göre indexli tutmanızı öneririm
Kolay Gelsin,