Simdi oncelikle Sebselect yaptirmak biraz kastirir onun icin degisik bir cozum buldum. En son yazdigima cok benziyor sadece Distinct ekledim. Bir de belki yarari olabilir diye table larin dump ini ekledim
Query bu sekilde
SELECT DISTINCT(list.email) FROM list, checksend WHERE list.list_id=checksend.list_id AND checksend.mail_id<>3
CheckSend Table i
-------------------------
CREATE TABLE checksend (
checksend_id int(5) NOT NULL auto_increment,
list_id int(5) NOT NULL default '0',
mail_id int(5) NOT NULL default '0',
PRIMARY KEY (checksend_id),
UNIQUE KEY checksend_id (checksend_id)
)
List Table i
---------------------------
CREATE TABLE list (
list_id int(5) NOT NULL auto_increment,
email varchar(255) NOT NULL default '',
PRIMARY KEY (list_id),
UNIQUE KEY email (email),
UNIQUE KEY list_id (list_id)
)
UNIQUE kurallari ve primary kurallari bu sekilde olucak.
Ben bunu
MySQL de calistirdim herhangi bir
sorun cikmiyor fakat dikkat edilmesi gereken ufak bir nokta var. List tableina ekledigin bir
mail e yollanmayan mailleri bulabilmen icin ona en az bir kere
mail yollamis olman lazim. Bunu da su sekilde asabilirsin. Eger list table ina bir
mail ekliyorsan checksend table inada
checksen_id, Adaminlistidsi, Mail_idsi,
XX, XX, 0
Yani adama 0 kodlu bir
mail yollamis gibi olucaksin. Bu sekilde
sorun cozulebilir.
Eğer Subselect kullanmak istiyor isan illa bir iki ornek:
1)SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 WHERE table1.id=table2.id);
2)SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
Bu ornekleri seninkine uyduramadim ama ugrasilir ise bence uydurulubilir.
Kolay Gelsin.