• 24-06-2010, 15:58:11
    #1
    slm

    şöyle bi tablom var

    sayac( id,ip,sayfa,refer,ilkgiris,uye_id,saat,tarih)

    benim yaptığım sorgu ise şöyle

    mysql_query("select id,uye_id,ip,sayfa, MAX(saat) AS saat from sayac group by ip order by saat desc")

    bu sorguyla çevrimiçi kişileri alabildim buraya kadar tamam ama hangi sayfayı gezdiklerini incelediğimde sayfa ların gene ilk kayıtlara göre geldiğini gördüm

    şu şekildede denedim

    mysql_query("select * from sayac group by ip order by saat desc")

    ama bu seferde de groupların kayıtları ilk olanı geldi

    benim amacım ise ilk sorguya biraz daha yakın

    tüm alan ları ait bilgileri group ta aynı hizada gelsin istiyorum ama olmuyor

    yardımcı olabilirmisiniz?
  • 24-06-2010, 16:11:33
    #2
    Yanlış anlamadıysam yapmaya çalıştığın şey önce sıralama işleminin (ORDERY BY) sonra da gruplama işleminin (GROUP BY) çalışmasını sağlamak. Böyle bir durumu gerçeklemek için SQL dünyasında "Aggregates" adında bir "Query Pattern" mevcut.

    Ayrıntılı olarak analiz etmedim ancak aşağıdaki sorgudan yola çıkara bir yere varmaya çalışmak sana yardımcı olacaktır:

    SELECT s1.* from sayac AS s1
    LEFT JOIN sayac s2 ON s1.ip=s2.ip AND s1.saat<s2.saat
    WHERE s2.ip IS NULL
  • 24-06-2010, 16:20:04
    #3
    çok teşekkür ediyorum yazdığınız sorgu tamda istediğim sonucu verdi
    sorgu nun mantığını anlamadım onuda araştırıp öğrenmesi bana kalıyo tekrardan çok teşekkürler