iki tablo arasında olmayan kayıtları bulmak
iki tablo arasında olmayan kayıtları bulmak
Merhaba
ikitane tablo var 1. tabloda adı alanında olupta 2. tabloda adı alanında olmayan kayıtları bulamk istiyorum.
Normlde Minus komutu ile yapılması lazım fakat firebirde nasıl çalışacağını anlamadım.
ikitane tablo var 1. tabloda adı alanında olupta 2. tabloda adı alanında olmayan kayıtları bulamk istiyorum.
Normlde Minus komutu ile yapılması lazım fakat firebirde nasıl çalışacağını anlamadım.
En son AhmetNuri tarafından 06 Nis 2010 02:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Ahmet DENİZ
Re: iki tablo arasında olmayan kayıtları bulmak
Aşagıdakine benzer bir query işini görür.
Kod: Tümünü seç
select * from tablo1 where tablo1.anakey not exists ( select tablo2.anakey from tablo2)
Re: iki tablo arasında olmayan kayıtları bulmak
Bu not exists de hata veriyor.
Kod 2 deki gibi çalıştırdı ama sorgu boş dönüyor fakat normalde dönmesi gereken bir iki kayıt var
Hata
Bu şekilde yazınca hata vermedi ama sorgu boş dönüyor
kod 2
Kod 2 deki gibi çalıştırdı ama sorgu boş dönüyor fakat normalde dönmesi gereken bir iki kayıt var
Kod: Tümünü seç
CREATE VIEW ATEST (
TEST1,
TEST2)
AS
SELECT
"test1"."test1_test1","test2"."test2_test2"
FROM
"test1","test2"
where "test1"."test1_test1" not exists(SELECT
"test2"."test2_test2"
FROM
"test2"
)
Kod: Tümünü seç
fmCompile.quCompile:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 10, column 33.
exists.
kod 2
Kod: Tümünü seç
CREATE VIEW ATEST (
TEST1,
TEST2)
AS
SELECT
"test1"."test1_test1","test2"."test2_test2"
FROM
"test1","test2"
where
not exists (SELECT
"test1"."test1_test1","test2"."test2_test2"
FROM
"test1","test2"
where
"test1"."test1_test1" = "test2"."test2_test2"
)
Ahmet DENİZ
Re: iki tablo arasında olmayan kayıtları bulmak
Aceleden yanlış yazmışım, kusura bakma.
Tam kod şöyle olacak
Exists tek başına kullanılır, herhangi bir select ifadesi kayıt döndürüyorsa true yoksa false olur.
not exists bu ifadeyi tersler, yani bilgi dönüyorsa false, bilgi dönmüyorsa true yapar.
Kullanım:
2010 martından sonra caride hareketi olan cari lerin listesini verir.
Cari hareket tablosunda, tutarı 1000 den büyük hareketi olmayan carileri listeler. ( toplam degil tek hareketteki tutar)
Umarım yardımcı olur, sql ini tam anlayamadım, sanırım joinlerle test1 ve test2 birbirine baglaman gerekebilir.
Tam kod şöyle olacak
Kod: Tümünü seç
select * from tablo1 where not exists (select * from tablo2 where tablo2.alan = tablo1.alan)
not exists bu ifadeyi tersler, yani bilgi dönüyorsa false, bilgi dönmüyorsa true yapar.
Kullanım:
Kod: Tümünü seç
select * from cari
where exists (select * from carihareket
where carihareket.tarih > '01/03/2010'
and cariharaket.carikod =cari.carikod )
Kod: Tümünü seç
select * from cari
where not exists (select * from carihareket
where carihareket.tutar > 1000
and cariharaket.carikod =cari.carikod )
Umarım yardımcı olur, sql ini tam anlayamadım, sanırım joinlerle test1 ve test2 birbirine baglaman gerekebilir.
Re: iki tablo arasında olmayan kayıtları bulmak
sadece hareket görmüş carileri alacaksanız neden SQL le takla atırıyorsunuzki? master detay bağ var arada, direk hareketi sorgulayın filtreleri uygulayın cari table da ki bir bilgi gerekiyorsa master table hareket, cari table detay olarak join leyin.
kolay gele
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: iki tablo arasında olmayan kayıtları bulmak
örneğin bir stok kart tablomuz var birde stokhareket tablomuz var
STOKHAREKET TABLOSUNDA BULUNMAYAN KAYITLARI BULALIM
SELECT SH.* FROM STOKHARE SH WHERE SH.STOK_ADI NOT IN (SELECT STOK_ADI FROM STOKKART ST WHERE ST.STOK_ADI=SH.STOK_ADI)
STOK HAREKET TABLOSUNDA ADI BULUNAMAYAN STOKKARTLARININ LİSTESİNİ VERİR
UMARIM SORUYU DOĞRU ANLAMIŞIMDIR
STOKHAREKET TABLOSUNDA BULUNMAYAN KAYITLARI BULALIM
SELECT SH.* FROM STOKHARE SH WHERE SH.STOK_ADI NOT IN (SELECT STOK_ADI FROM STOKKART ST WHERE ST.STOK_ADI=SH.STOK_ADI)
STOK HAREKET TABLOSUNDA ADI BULUNAMAYAN STOKKARTLARININ LİSTESİNİ VERİR
UMARIM SORUYU DOĞRU ANLAMIŞIMDIR
Re: iki tablo arasında olmayan kayıtları bulmak
@asiltürk;
lütfen forum kurallarına uyalım.
lütfen forum kurallarına uyalım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim