Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Birden fazla kaydı olanları listele

Konu, 'ASP' kısmında abidost tarafından paylaşıldı.

  1. abidost

    abidost Üye

    Kayıt:
    3 Haziran 2008
    Mesajlar:
    145
    Beğenilen Mesajlar:
    1
    Merhaba arkadaşlar.

    Örnek olarak. Kullanicilar tablosu ve mesajlar tablosu var.

    3 taneden fazla mesajı bulunan üyeleri listelemek istiyorum.

    Yol gösterir misiniz?
     
  2. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    677
    Beğenilen Mesajlar:
    185
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Bunu denermisin.

    SELECT b.UyeID, count(b.UyeID)
    FROM Kullanicilar AS a, mesajlar AS b
    WHERE a.UyeID = b.UyeID
    GROUP BY b.UyeID
    HAVING count(b.UyeID) > 3
     
  3. abidost

    abidost Üye

    Kayıt:
    3 Haziran 2008
    Mesajlar:
    145
    Beğenilen Mesajlar:
    1
    tabloları sql de view yaptım
    SELECT uyeid FROM uye_ve_mesaj GROUP BY uyeid HAVING COUNT(uyeid) > 3
    ile ilgili idleri çektim. Listeleme esnasında uyeid in (...)
    yaparak 3 den fazla mesajı olanları gösterdim.

    Senin verdiğini denemedim ama bu şekilde çalışıyor. uyeid GROUP BY olduğu için diğer bilgileri gösteremicektim zaten.

    Mantık hatası var mı?
     
  4. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    677
    Beğenilen Mesajlar:
    185
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    mantık doğru ancak
    where ile 2 tabloda üye ID leri eşitlemezsen, olduğundan fazla sayı gelmesi gerekir. test kayıtlarını artırırsan görmen gerekiyor, hem şarta uyan hemde uymayan kayıtlar olsun.
     
  5. abidost

    abidost Üye

    Kayıt:
    3 Haziran 2008
    Mesajlar:
    145
    Beğenilen Mesajlar:
    1
    şartı ilk sorguda yapıyorum orda oluşan id leri ikinci sorguda direk açıyorum uye id in(...)
    sadece ilk sorguda seçilen idler geliyor. Şarta uymayanın gelme şansı yok ama idler çoğaldığında yavaşlama olabilir. Boş vaktimde senin verdiğin örnek veya daha stabil bir kod eklemeye çalışıcam.
     
    sedirAğacı bunu beğendi.
  6. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    677
    Beğenilen Mesajlar:
    185
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Aslında bende fazladan gereksiz iş yaptırmışım.

    mesajlar tablodaki üye ID lerin hepsi Kullanıcı tabloda var. Hali ile 1. tabloyu hiç kullanmamalıyız.
    abidost sen select sorgunda sadece 2. tabloyu kullandı isen ve tek select kullanmış isen(çift yazmışsın) seninki doğru.

    tek select te iş bitiyor.

    SELECT UyeID, count(UyeID)
    FROM mesajlar
    GROUP BY UyeID
    HAVING count(UyeID) > 3

    İlk tablo ne zaman gerekli, eğer sadece açık olan üyelerin mesajlarını say, yada sadece istanbulda oturanların mesajlarını say gibi ilk tabloda olan bir alanı ilgilendiren bir şart eklersek o zaman kullanıcılar tablosunuda WHERE şartı ile eklemeliyiz.
     
    abidost bunu beğendi.
  7. abidost

    abidost Üye

    Kayıt:
    3 Haziran 2008
    Mesajlar:
    145
    Beğenilen Mesajlar:
    1
    GROUP BY kullanınca tablodaki diğer verilere ulaşılamıyo. Diğer alanları eklersekte grup istenileni yapmıyor. Şimdilik böyle kalsın. Konuyu hortlatmayalım. Teşekkür ederim.