»
Inner Join veya benzeri bir SQL ilişkisi Nasıl ?
|
| Veritabanları MySQL , MSSQL, SQL, Access, Oracle |
![]() |
|
|
LinkBack | Seçenekler |
|
|
#12 (permalink) |
|
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,279
|
Bulursak bildiririz tabii ki..
__________________
FERRUH.MAVİTUNA - İnanmıyorum, yeni site! |
|
|
|
|
|
#13 (permalink) |
|
Üyelik Tarihi: 18.03.2002
Yer: İstanbul
Yaş: 29
Mesaj: 29
|
SQL
Çok yogundum iki ara bir derede yazdım. Eğer ıcq dan ulasirsan bir sorun cikarsa konusuruz ama tahminimce asagidaki gibi olmasi lazim.
su an yollanan mail_id=2 olarak farzedelim. SELECT list.email FROM list, checksend WHERE list.list_id=checksend.listid AND checksend.mail_id<>2 while a girsin { mail atılsın Yollandi diye ROw eklensin } |
|
|
|
|
|
#14 (permalink) |
|
Üyelik Tarihi: 18.03.2002
Yer: İstanbul
Yaş: 29
Mesaj: 29
|
Ewet Oldu Galiba
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. |
|
|
|
|
|
#15 (permalink) |
|
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,279
|
Şu Query ile işlem tamam;
SELECT list.list_id FROM list WHERE NOT EXISTS (SELECT checksend.list_id FROM checksend WHERE mail_id = 5 AND list.list_id = checksend.list_id) @norg hocam teşekkürler. "WHERE EXIST" kullanımını bilmiyordum. Acayip yardımcı oldu ve olay biraz modifiye ile çözüldü. Bir de maalesef uzun süredir adam akıllı bir SQL referans sitesi veya dokümanı bulamadım. Bu konuda da bilgisi olan varsa bekliyorum.
__________________
FERRUH.MAVİTUNA - İnanmıyorum, yeni site! |
|
|
|
| Sponsorlu Bağlantılar | |
|
Zoque.Forum
Reklam
|
|
Zoque'a hoşgeldiniz!