mehmetduran.com - Paylaşmak Güzeldir...
Veritabanında 'Son Yorumlananlar' Sorgulaması
Bu yazımda veritabanını üzerinde tuttuğumuz verilerde kullanabileceğimiz sorgulamalardan olan ve biraz karmaşık olan "Son Yorumlananlar" sorgulamasından bahsedeceğim. Bu konuya değinme nedenim ise kendi bloğumda da daha önce bu konuyla ilgili sorun yaşamam ve bu sorunu geçenlerde sitemi güncellerken çözmemdir. Sitemde yer alan son yorumlanan yazılar kısmında yazılar yorumlanma sırasına göre çıkmıyordu. Ayrıca tablolar arası ilişkide de where in komutu kullanıyordum. Bunun yerine join komutu kullandım ve bu komutun where in komutuna göre çok hızlı çalıştığını gördüm. Şu anda bloğumda yer alan son yorumlanan yazılar bölümü doğru biçimde çalışmaktadır. Şimdi bu sorgulamayı nasıl yapacağımıza bakalım.

Öncelikle bu sorgulamayı mysql veritabanı ile yaptığımı ve vereceğim örnekte de mysqlde kullandığım sorgulamayı vereceğimi belirtmek isterim. Örnekte kullandığım tablolar ve sonuç bilgisi aşağıdaki gibi olacak.

Veritabanında Son Yorumlananlar Sorgulaması

Bu tabloya göre son yorumlanan yazıların sorgulamak için kullanacağımız sql sorgulaması ise aşağıdaki gibi olmalı.

  select sorgu4.yazi_id,sorgu4.yazi_baslik from yazilar as sorgu4
    join (select yazi_id from
      (select max(yorum_id),yazi_id from
        (select * from yorumlar order by yorum_id desc) as sorgu1
      group by yazi_id order by yorum_id desc limit 4) as sorgu2)
    as sorgu3
  on sorgu4.yazi_id=sorgu3.yazi_id;

Görüldüğü gibi sorgumuz biraz karmaşık görünse de oldukça basit bir sorgulama. Sorgumuzda en önemli nokta ise join komutu diyebilirim. Aslında bu komut yerine where in komutu da kullanılabilirdi. Ancak yaptığm örneklerde gördümki join komutu where in komutuna göre oldukça hızlı çalışıyor. Bu iki komut arasındaki farkı başka bir yazımda paylaşmak istiyorum.

Bu sorgulama mysql veritabanı ile yaptığım bir sorgulama. Ms sql için denemedim ama çalışacağını düşünüyorum.

Ayrıca yukarıda vermiş olduğum resimde tüm veriler gözükmediğinden sonuç sorgulamasında elde ettiğimiz farklılık bundan kaynaklanıyor.

Not : Sorgulamamız yeterli sayıda veri olduğunda sorunsuz çalışmakta iken az sayıda veri üzerinde elde ettiğimiz bilgilerin sırasında farklılık oluyor. Bunun nedenini bulamadım ama yeterli sayıda veri üzerinde sorgumuz başarılı bir biçimde çalışmaktadır.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Host Sorunu ve Bloğuma Erişim Sıkıntısı Bloğumda Kullandığım SiteMap Sınıfı Asp ile Veritabanı İşlemleri Jquery, Ajax ve FaceBox ile Edit Update Uygulaması Stajım İyi Gidiyor
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Ayşe Sertoğlu 10 Nisan Cuma 2009 15:04 #1
merhabalar. hangi makalenin kaç defa okunduğunu ve en çok okunanlar sıralamasının nasıl yapıldığı hakkındada biraz bilgi verebilirmisiniz acaba. Sitenizde gerçekten çok güzel bilgiler var.
Mehmet Duran 10 Nisan Cuma 2009 23:50 #2
Merhaba. Her makalenin kaç defa okunduğunun bilgisini makalenin bilgilerini tuttuğum tabloda tutuyorum. Bu bilgiye göre de en çok okunanlar sorgulamasını yapıyorum.
Ayşe Sertoğlu 11 Nisan Cumartesi 2009 00:54 #3
evet tabloda tuttuğunu anlıyorum. ama örneğin makaleyi okumak için yapılan tıklamayı nasıl yakalıyor ve kayıt ediyorsunuz. bunu merak etmiştim
Mehmet Duran 11 Nisan Cumartesi 2009 17:14 #4
Makaleyi bir sayfa üzerinde göstermek zorundasın. Bunu yaparken dediğin kontrolü de yapabilirsin. Mesela kendi sitemde tamamen mantık bu. Bir sayfa üzerinde makaleleri gösterirken, her gösterimde okunma sayısını artırıyorum.
kız oyunları 08 Eylül Çarşamba 2010 19:16 #5
Çok teşekkürler çok yararlı bir yazı olmuş
Serdar 17 Ocak Pazartesi 2011 02:35 #6
Hocam selamlar, Bir tabloda tuttuğum verileri mssql ortamında çekip birkaç farklı sütun bilgisiyle başka bir tabloya aynı where kriteriyle eklemek istiyorum örn. tbl_uyebilgileri uyeID uyeAdi uyeSoyadi grupNo tbl_kayitbilgileri bilgiID uyeAdi uyeSoyadi grupNo yas cinsiyet örn. burda 15 satırı 2. tabloya where grupNo kriterine göre aktarırken eklenen bilgilere yas cinsiyet gibi bilgileri de kullanıcıdan alarak eklemek aktarmak istiyorum. Yardımcı olursanız sevinirim iyi çalışmalar....
Mehmet Duran 04 Şubat Cuma 2011 15:21 #7
@Serdar, tabloda olan ve başka bir yere aktaracağın verileri ya bir dosyaya alırsın ya da direk olarak okuyup kod içinde döngü ile gezerek yeni tabloya uygun hale getirirsin ve yeni tabloya aktarırsın. Bazı verileri kullanıcıdan almak istiyorsan ona göre bir plan oluşturmalısın.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Şans bir uğraşının eseridir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009