MySQL'de aynı IP ile giriş yapmış kullanıcıları listeleme

 
MySQL  
710  

Merhaba.

Yazımda MySQL veritabanında giriş kayıtlarında bir IP ile birden çok giriş yapmış üyeleri nasıl tespit edebiliriz, bunun için nasıl bir SQL kodu yazmalıyız gibi konulara deyineceğim.

"Neden böyle bir şeye ihtiyacımız olsunki?" Diyebilirsiniz. Benim de cevabı şu olur "Neden olmasın?". Şaka şaka! :) Şöyle düşünün, üye ID ve IPlerini tutan bir tablomuz var. Burada aynı IP ve farklı üye IDleri olan kayıtlar olabilir. O halde bizim bunları tespit edecek bir SQL koduna ihtiyacımız olacak.

Bu SQL kodu sorunumuzu çözecektir:

Tablo Adı: girisler
Sütun Adları: uye(int), ip(varchar)

sql kodu:SELECT ip, COUNT(DISTINCT uye) AS uye_sayisi, GROUP_CONCAT(DISTINCT uye) AS uyeler FROM girisler GROUP BY ip HAVING COUNT(DISTINCT uye) > 1 ORDER BY ip ASC, uye ASC

ip sütunu, adından da anlaşıldığı gibi IP adreslerini tutuyor.

uye sütunu ise uyelerin tutulduğu tablodaki üye ID nosunu tutuyor.

Bu SQL kodunun çıktısı şuna benzer olacak:

IP: 127.0.0.1, ÜYE SAYISI: 3, ÜYELER: 8,3,4
IP: 127.0.0.2, ÜYE SAYISI: 2, ÜYELER: 5,2

Not: Burada üyeler kısmında aralarında virgüller olacak şekilde üyelerin ID nolarını verecektir. Biz bunları PHP tarafında explode fonksiyonu ile ayrıştırarak dizi haline getirebiliriz.

Umarım işnize yaramıştır. Herkese iyi çalışmalar dilerim.