folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder SQL Sorgusu İçin Yardımınız Gerekiyor.



SQL Sorgusu İçin Yardımınız Gerekiyor.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Merhaba arkadaşlar.

    Mesajlaşma sistemi yapmaktayım. Tablo tasarımım şu şekilde.

    tblSohbetler tablosu

    SOHBET_ID int primary key
    GONDEREN_KULLANICI_ID int
    GONDERILEN_KULLANICI_ID int
    YAZAN_KULLANICI_ID int
    MESAJ varchar(MAX)
    GONDERIM_TARIH datetime
    OKUNDU bit

     

    tblKullanicilar tablosu

    KULLANICI_ID int primary key
    AD_SOYAD varchar(50)
    KULLANICI_ADI varchar(50)
    KULLANICI_SIFRE varchar(50)

     

    Örnek 1
    KULLANICI_ID = 4
    KULLANICI_ADI = ontedi

    adlı kişi

    KULLANICI_ID = 2
    KULLANICI_ADI = hakan

    adlı kişiye mesaj yolladığında tblSohbetler tablosunda şu şekilde kayıt edilmektedir.

    tblSohbetler (Kayıt ekleme)

    GONDEREN_KULLANICI_ID = 4
    GONDERILEN_KULLANICI_ID = 2
    YAZAN_KULLANICI_ID = 4

    Örnek 2
    KULLANICI_ID = 2
    KULLANICI_ADI = hakan

    adlı kişi

    KULLANICI_ID = 4
    KULLANICI_ADI = ontedi

    adlı kişiye mesaj yolladığında tblSohbetler tablosunda şu şekilde kayıt edilmektedir.

    tblSohbetler (Kayıt ekleme)

    GONDEREN_KULLANICI_ID = 2
    GONDERILEN_KULLANICI_ID = 4
    YAZAN_KULLANICI_ID = 2

     

    Kişiler arasında geçen tüm mesajların sorgusunu şu şekilde yapmaktayım

    SELECT
    S.SOHBET_ID,
    S.GONDEREN_KULLANICI_ID,
    S.GONDERILEN_KULLANICI_ID,
    S.YAZAN_KULLANICI_ID,
    S.MESAJ,
    S.GONDERIM_TARIH,
    S.OKUNDU
    FROM
    tblSohbetler AS S
    WHERE
    S.GONDEREN_KULLANICI_ID IN(2, 4)
    AND
    S.GONDERILEN_KULLANICI_ID IN(4, 2)

     

    Asıl meseleyi anlatacam lakin gece bu saatlerde kafa biraz zor çalışıyor.

    Mesela bu kişi başka kişilerle mesajlaştığında tablodaki kayıtlar

    http://i.hizliresim.com/pmzrMq.png

    KULLANICI_ID = 4 olan kişi, 3 farklı kişi ile toplamda 12 tane mesajı bulunmaktadır. Benim yapmak istediğim oradaki 3 farklı kişinin sayısını bulmak.

    Bir başka örnek. Diyelim ki KULLANICI_ID = 4 olan kişinin mesajlaştığı farklı kişiler sayısını nasıl bulurum

    Not: Emeği geçenlere şimdiden teşekkürler. Anlatmak ciddi anlamda tıkandım diyebilirim.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pesimistzombie
    pesimistzombie's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    bişey dikkatimi çekti YAZAN_KULLANICI_ID ne işe yarıyor? 

    istediğin sorgu şu sanırım ben de tam anlayamadım ama bi dene

    SELECT count(DISTINCT GONDERILEN_KULLANICI_ID) as Saydir FROM tblSohbetler WHERE GONDEREN_KULLANICI_ID=ISTEDIGIN_ID group by GONDEREN_KULLANICI_ID

    çekerken hedehodo("saydir") olarak kullanacaksın

     

    pesimistzombie tarafından 30/Ara/14 00:58 tarihinde düzenlenmiştir

    :|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    YAZAN_KULLANICI_ID (Sohbete mesajı ekleyen kişi. Çünkü aynı tabloda karşılıklı mesajlaşma durumu mevcut.)

     

    Sabah bir deneyecem, sağolasın.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    pesimistzombie yazmış cevabı.  DISTINCT kullanman yeter.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 784 Toplam Mesaj: 4