byle bişey sanırım istediğin : select table. , table2. from table tinner join table2 t2 ont. id = t2. idwhere t. id not in (select id from t2); edit: dur ben tabloyu oluşturup deneyeyim bi

"IN" büyük kayıtlar için tercih edilmemesi gereken bir operatrdür çünkü sql server "IN" ile verdiğin sub query nin dndüreceği her bir satır için "Where" ve "OR" operatrlerini kullanarak karşılaştırma yapar . IN yerine EXISTS kullanmanı tavsiye ederim, tablolara indexleme yapmayı da unutma. SELECT FROM tablo2 WHERE NOT EXISTS (select tablo2. id from tablo1 where tablo1. tablo2id = tablo2. id ) Ehl-i Byte

Anladığım şu : iki tablo arasında ki verileri birleştirip bir kıyasla yardırmak istiyorsun?

hocam soruyu tam anlayamadığım için direk query yazamıyorum ama "is null" operatrüyle yapabilirsin gibime geliyo? "... join tablo2 on tablo1. field = tablo2. field where tablo2. field2 is null;"

hocam soruyu tam anlayamadığım için direk query yazamıyorum ama "is null" operatrüyle yapabilirsin gibime geliyo? "... join tablo2 on tablo1. field = tablo2. field where tablo2. field2 is null;" Sylediğin şeyi çok nce denemiştim hocam ancak maalesef hiç sonuç dnemiyor veritabanı sunucusu. Açıkçası anlamadım. Şimdi phpmyadmin ile rnek sql i hazırlayıp yayınlarım sorunun anlaşılması için. Yukarıya ekledim tablo1 in gstermediği şu tablo 2 verilerini listelemem lazım. (2, 'veri2'), (4, 'buna veri diyenin'), (5, 'byle veri olmaz ols'), DrKill tarafından 28/Nis/13 17:38 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

Yukarı arkadaşlar. Şu an tek bir NOT IN operatoru ve 2 adet SELECT sorgusu ile bir sonuca vardık ama daha performanslı bir sonuç arıyorum. Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

2 stunlu 2 adet tablo var tablo1 = idtablo1, idtablo2_idtablo2 tablo2 = idtablo2, veri tablo1 deki idtablo2_idtablo2, tablo2 nin pk'ni gsteren bir Foreign Key ve NOT NULL değerinde. Tablo1 için rnek veri seti; 1, 1 2, 2 7, 7 8, 8 Tablo2 için rnek veri seti 1, "veri1" 2, "veri2" 3, "veri3" 4, "veri4" 5, "veri5" 6, "veri6" 7, "veri7" 8, "veri8" Seneryo şu; bazen tablo1'den veriler siliniyor. Verisetinde olduğu gibi. Benim yapmak istediğim tablo1 tarafından gsterilmeyen tablo2 değerlerini bulmak. Bu rnekte; 3, "veri3" 4, "veri4" 5, "veri5" 6, "veri6" verilerini bulmam lazım. Byle basit birşeyi yapamadığım için kendimden utanıyorum. Kafam durdu bu gün sanırım iyicene. Yardım ederseniz sevinirim. LEFT veya RIGHT join ile verileri çıkarabiliyorum... NULL olan yada olmayan tümünü listeleyebiliyorum ancak sadece null değerli olanlanları listeleyemedim. Ulan anlatma kabiliyetimde azaldı neyse siz yukarıdaki rnekten anlarsınız umarım. -- -- Tablo için tablo yapısı `tablo1` -- CREATE TABLE IF NOT EXISTS `tablo1` ( `idtablo1` int(11) NOT NULL AUTO_INCREMENT, `tablo2` int(11) NOT NULL, PRIMARY KEY (`idtablo1`), KEY `tablo2` (`tablo2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; -- -- Tablo dküm verisi `tablo1` -- INSERT INTO `tablo1` (`idtablo1`, `tablo2`) VALUES (1, 1), (2, 3), (3, 6), (4, 7); -- -- -- Tablo için tablo yapısı `tablo2` -- CREATE TABLE IF NOT EXISTS `tablo2` ( `idtablo2` int(11) NOT NULL AUTO_INCREMENT, `veri` varchar(20) NOT NULL, PRIMARY KEY (`idtablo2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Tablo dküm verisi `tablo2` -- INSERT INTO `tablo2` (`idtablo2`, `veri`) VALUES (1, 'verinin bylesi'), (2, 'veri2'), (3, 'bu bir veri'), (4, 'buna veri diyenin'), (5, 'byle veri olmaz ols'), (6, 'hadi bizimde verimiz'), (7, 'haydi veriler tabana'); -- -- Dkümü yapılmış tablolar için kısıtlamalar -- -- -- Tablo kısıtlamaları `tablo1` -- ALTER TABLE `tablo1` ADD CONSTRAINT `tablo1_ibfk_1` FOREIGN KEY (`tablo2`) REFERENCES `tablo2` (`idtablo2`) ON DELETE NO ACTION ON UPDATE CASCADE; Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

Anladığım şu : iki tablo arasında ki verileri birleştirip bir kıyasla yardırmak istiyorsun? SELECT t1. idtablo1, t1. tablo2, t2. idtablo2, t2. veri FROM tablo2 as t2LEFT JOIN tablo1 as t1ON t1. tablo2 = t2. idtablo2 Bunu zaten yapabiliyorum ancak sonuna WHERE t1. idtablo1 = NULL dediğimde bana " MySQL boş bir sonuç kümesi dndürdü . ( Sorgu 0.0004 san. sürdü )" Bunu zaten hiç çzemedim niye byle yapıyor? Yani mantıken eşit olmayanları listelemesi lazım. Bi bok anlamadım. @FREUD hocam belirttiğin koda gerek yok şu kod çalışıyor ama bu belirttiğim sorgular çok büyük veritabanında çalışacağını düşünürsek ve çok fazla satır olacağını düşünürsem NOT IN veya IN komutları çok performanssız çalışacaktır. Daha performanslı bir kod arıyorum açıkçası. rnek çalışan kod: SELECT FROM tablo2 AS t2WHERE t2. idtablo2 NOT IN ( SELECT t1. tablo2FROM tablo1 AS t1 ) DrKill tarafından 28/Nis/13 18:09 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

"IN" büyük kayıtlar için tercih edilmemesi gereken bir operatrdür çünkü sql server "IN" ile verdiğin sub query nin dndüreceği her bir satır için "Where" ve "OR" operatrlerini kullanarak karşılaştırma yapar . IN yerine EXISTS kullanmanı tavsiye ederim, tablolara indexleme yapmayı da unutma. SELECT FROM tablo2 WHERE NOT EXISTS (select tablo2. id from tablo1 where tablo1. tablo2id = tablo2. id ) Eyv hocam teşekkür ederim. Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir