Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » Veritabanları » Inner Join veya benzeri bir SQL ilişkisi Nasıl ?


Veritabanları MySQL , MSSQL, SQL, Access, Oracle

Yanıt
 
LinkBack Seçenekler
Old 10.12.2002   #1 (permalink)
soul
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,268
Inner Join veya benzeri bir SQL ilişkisi Nasıl ?

Durum şu iki tane tablom var bunlar bir tanesi e-mail adreslerini tutuyor bir ikincisi de mailların email adreslerine gittiğini not alıyor;

+ list
----------------------
- list_id
- email (e-mail adresi)

+checksend
---------------------
- checksend_id
- list_id (list tablosundaki list_id ile ilişkili)
- mail_id (gönderilen e-mailin numarası bu diğer bir tabloda tutuluyor)

E-maillar gönderilirken her gönderimden sonra bunu checksend' e list_id ile kaydediyorum. Dolayısıyla yarın bir gün aynı mesajı göndermek isteyince aynı kişilere göndermemiş oalcak.

Öyle bir SQL yazmalıyım ki "list.list_id" "checksend.list_id" de olmayan e-mail adreslerini seçmeliyim ?

Nasıl yazabileceğim hakkında fikri olan var mı ?
__________________
FERRUH.MAVİTUNA - Okuduklarim
You are not your fu*@.' khakis, wait a minute maybe you are...
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.12.2002   #2 (permalink)
hayalet
 
hayalet's Avatar
 
Üyelik Tarihi: 07.10.2002
Yer: İstanbul
Yaş: 26
Mesaj: 986
select list.email from list,checksend where list.list_id != checksend.list_id

işe yaramalı ama söyliyim kontrol edemedim.
hayalet şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.12.2002   #3 (permalink)
soul
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,268
ifade çalışmıyor.

"!="

ile eşit olmamasını belli etmek istiyorsun sanıyorum bunun yerine o anlama gelen
"<>"

kullandım ancak bu da benim denediğime çıkıyor zaten iki tablodan da kayıt çektiğinden aynı kaydı tekrar tekrar getiriyor dolayısıyla ilk tablo kayıt sayısı * ikinci tablo kayıt sayısı kadar kayıt dönüyor bu da benim örneğimde 70.000 küsüre tekabül ediyor.

Yani başka şekilde mantık kurmak gerekiyor sanıyorum.
__________________
FERRUH.MAVİTUNA - Okuduklarim
You are not your fu*@.' khakis, wait a minute maybe you are...
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.12.2002   #4 (permalink)
stNonStop
 
stNonStop's Avatar
 
Üyelik Tarihi: 16.02.2002
Yer: İstanbul
Yaş: 29
Mesaj: 1,809
Görsel: 5
SELECT DISTINCT list.email from list,checksend where list.list_id <> checksend.list_id;

Böyle yazarsan herhalde tekrarlanan satırları almazsın
__________________
St. Nonstop

Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ

Mesaj stNonStop tarafından 12.12.2002 (00:41) yeniden düzenlendi..
stNonStop şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #5 (permalink)
stNonStop
 
stNonStop's Avatar
 
Üyelik Tarihi: 16.02.2002
Yer: İstanbul
Yaş: 29
Mesaj: 1,809
Görsel: 5
Ufak bir düzeltme

Eğerki yanlış anlamadıysa birden fazla msg var ve sen bunları sıra ile yollamıyorsun kişilerin bir bölümüne 1. msg yi diğer bölümüne 2. msg yi diye devam ediyor.

Ve Sen email adreslerine aynı msgnin ikinci kez gitmesini istemiyorsun.

Bence bu sorgumuza birde
SELECT DISTINCT list.email from list,checksend where list.list_id <> checksend.list_id AND checksend.mail_id='xxxx';

Şekline getirmen daha mantıklı bu sayede xxxx değişkenin bağlı mail id sinin hangi email adreslerine gitmediğini bulursun. Hatta bu seferde DISTINCT te dahi ihtiyaç duymazsın gibime geliyor.
__________________
St. Nonstop

Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
stNonStop şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #6 (permalink)
soul
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,268
DISTINCT kullanımını buradaki SQL de bir şey ifade etmiyor ayı kayıtları almadığı kesin ancak çapraz şekilde iki tyablodan kayıt çekildiğinden dolayı sonuç DISTINCT ile de olsa yanlış dönüyor (daha doğrusu bizim istediğimiz dönmüyor)

Şu an tüm maillar dönüyor checksend işe yaramıyor. "AND mail_id = 5 " kısmı benim de aklımda da soruyu iyice bulandırmayayım diye hiç yazmamıştım.

Başka fikirleri olanları bekliyorum...
__________________
FERRUH.MAVİTUNA - Okuduklarim
You are not your fu*@.' khakis, wait a minute maybe you are...
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #7 (permalink)
stNonStop
 
stNonStop's Avatar
 
Üyelik Tarihi: 16.02.2002
Yer: İstanbul
Yaş: 29
Mesaj: 1,809
Görsel: 5
ANSI92 de DISTINCT kullanımı yok muydu ??? Yazdığım SQL sordusu MySQL de çalışması lazım ama seninki anladığım kadarı ile farklı biraz...


Kolay gelsin...
__________________
St. Nonstop

Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
stNonStop şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #8 (permalink)
soul
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,268
SQL server ve Access ta da DISTINCT geçiyor ancak sorun o değil iki tablodan çekim yaparken "list.list_id <> checksend.list_id" yazılmasına rağmen tüm kayıtlar dönüyor.

İki tablodan bu tip bir çekim yaparsan dönen yanlış olur çünkü;

Mesela list.list_id 50 olsun.

ilk kayıt için checksend' e bakıyor. karşısına checksend.list_id' 25 olarak çıkıyor ne olutyor hemen bu kayıt geçiyor halbyuki biizm istediğimizde tüm tablıoyu kontrol etmeliydi.

SQL çalışırken tüm tabloyu bu şekilde kontrol eder dolayısıyla bu SQL cümleciğinden istediğimiz sonucu alamayız. İşte bu yüzden buraya yazdım

Mesela checksend tablosunda sadece tek kayıtr olsun list_id' side 25 olsun bu sefer mailları listelerken 25 nolu id yi bulamayız. Çünkü tek kayıt vardır ve bunu kontrol ettiğinde öbür taraftada görür ve bunu döndürmez..

Şimdi bir fikri olan varsa bekliyorum...
__________________
FERRUH.MAVİTUNA - Okuduklarim
You are not your fu*@.' khakis, wait a minute maybe you are...
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #9 (permalink)
stNonStop
 
stNonStop's Avatar
 
Üyelik Tarihi: 16.02.2002
Yer: İstanbul
Yaş: 29
Mesaj: 1,809
Görsel: 5
Soul baba msg_ID işin içine katmadan olmaz gibime geliyor çünkü buradaki kriterimiz maillerimiz yani aynı mail bir ikişe iki defa gitmiyecek.

SQL de mantıken tüm satırları kontrol ettiği için aralığı bizim daraltmamız gerekir. Bunuda ancak her msg_ID için ayrı ayrı sorgu yaparak ve onları ayrı ayrı işlemlerden gçirip normal bir dizi yerine çok indekli bir diziye açılması gerekir... Bunuda while dönünleri içerisinde yaparabiliriz.

İlk while döngüsü msg_id lerini döndürecek, ikinci wihle döngüsünde sorgulardan gelen record setleri diziye açarak yapabiliriz...

$_arraySorguDizisi[$msg_ID][$x] şekilde bir dizimiz olur bu sayede tek değişken dizisinde tüm bilgilerimizi tutarız gibime geliyor...
__________________
St. Nonstop

Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
stNonStop şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.12.2002   #10 (permalink)
soul
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,268
bunu while döngüsünde yapmak zaten mevzu bahis değil çok kolay bir olay benim istediim bunu SQL ile döndürmek bu tip bir çözüm arıyorum.

Aksi takdirde çok ciddi bir performans kaybı oluşuyor.
__________________
FERRUH.MAVİTUNA - Okuduklarim
You are not your fu*@.' khakis, wait a minute maybe you are...
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
nasil , iliskisi , sql , benzeri , join , inner



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni