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?
group by ve order by veri çekerken sağlıklı çekemiyorum
2
●437
- 24-06-2010, 15:58:11
- 24-06-2010, 16:11:33Yanlış 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ç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