• 04-06-2015, 05:42:49
    #1
    Arkadaşlar merhaba,

    Sorunum şu; iki adet tablom var. Birisi kullanıcıların bilgilerinin kayıtlı olduğu tablo diğeri kullanıcıların girişlerini tutuyor. Ben son 24 saatte 3 defadan daha az giriş yapan kişilerin adını soyadını listeletmek istiyorum. Bunu nasıl yapabilirim.

    Kullanıcı Tablosu:

    kullanici_id | kullanici_adi | kullanici_soyadi


    Giriş Yapanlar Tablosu

    giris_id | kullanici id | giris_tarihi

    Kullanıcı siteye her girdiğinde giriş tablosuna giriş tarihi ile ekleniyor. Ben son 24 saatte 3 defadan daha az giriş yapanları listeletmek istiyorum. yalnız bunu php ile değil mysql ile yapmak istiyorum.
  • 04-06-2015, 09:13:07
    #2
    Select count(*) as sayi, isim from giris inner join kullanici on kullanici.id=giris.kullanici_id where giris_tarihi between current_timestamp and current_timestamp - interval 24 hour group by giris.kullanici_id having sayi
  • 04-06-2015, 12:58:21
    #3
    reddoc adlı üyeden alıntı: mesajı görüntüle
    Select count(*) as sayi, isim from giris inner join kullanici on kullanici.id=giris.kullanici_id where giris_tarihi between current_timestamp and current_timestamp - interval 24 hour group by giris.kullanici_id having sayi
    Çok teşekkür ederim reddoc sağol.
  • 05-06-2015, 12:04:09
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Buna benzer bir soru da ben sormak istiyorum

    time() fonksiyonu ile veritabanıma kayıt geliyor.

    between current_timestamp and current_timestamp - interval 24 hour

    yi kullansam o andan itibaret 24 saat geriye giderek veri döndürecek

    peki bunu belirli bir dilimde yapmanın bir yolu var mı

    mesela son 24 saat olarak değil de söyle olsa
    şu an saat 05.06.2015 12.01 bunun karşığı zaman damgası 1433494865 olsun
    bana bundan geriye 24 saati değil de 04.06.2014 00:00 - 04.06.2014 23:59 aralığında olan geçmiş tam bir günün aralığı versin?

    bu mümkün mü?
  • 05-06-2015, 15:08:32
    #5
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    Buna benzer bir soru da ben sormak istiyorum

    time() fonksiyonu ile veritabanıma kayıt geliyor.

    between current_timestamp and current_timestamp - interval 24 hour

    yi kullansam o andan itibaret 24 saat geriye giderek veri döndürecek

    peki bunu belirli bir dilimde yapmanın bir yolu var mı

    mesela son 24 saat olarak değil de söyle olsa
    şu an saat 05.06.2015 12.01 bunun karşığı zaman damgası 1433494865 olsun
    bana bundan geriye 24 saati değil de 04.06.2014 00:00 - 04.06.2014 23:59 aralığında olan geçmiş tam bir günün aralığı versin?

    bu mümkün mü?
    $tarih1 = strtotime('04.06.2014 00:00');
    $tarih2 = strtotime('04.06.2014 23:59');

    where $tarih1 <= tarih and $tarih2 >= tarih

    $tarih1 = ilk tarih
    $tarih2 = son tarih
    tarih = time() fonksiyonuyla verinin eklendiği sütun.
  • 05-06-2015, 15:26:45
    #6
    turhanli adlı üyeden alıntı: mesajı görüntüle
    $tarih1 = strtotime('04.06.2014 00:00');
    $tarih2 = strtotime('04.06.2014 23:59');

    where $tarih1 <= tarih and $tarih2 >= tarih

    $tarih1 = ilk tarih
    $tarih2 = son tarih
    tarih = time() fonksiyonuyla verinin eklendiği sütun.
    Sabit bir tarih olsa is kolay zaten bu kadar uzatmadan sorguyla da is cozulur. Hergun bir onceki gun degisecek
  • 06-06-2015, 11:37:31
    #7
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    Sabit bir tarih olsa is kolay zaten bu kadar uzatmadan sorguyla da is cozulur. Hergun bir onceki gun degisecek
    $dun = mktime(0, 0, 0, date("m") , date("d")-1, date("Y"));

    $tarih1 = strtotime(date('d.m.Y', $dun). ' 00:00');
    $tarih2 = strtotime(date('d.m.Y', $dun). ' 23:59');
  • 06-06-2015, 22:08:29
    #8
    Üyeliği durduruldu
    reddoc adlı üyeden alıntı: mesajı görüntüle
    Select count(*) as sayi, isim from giris inner join kullanici on kullanici.id=giris.kullanici_id where giris_tarihi between current_timestamp and current_timestamp - interval 24 hour group by giris.kullanici_id having sayi
    arkadaş cevabını vermiş zaten
  • 09-06-2015, 19:09:16
    #9
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    Buna benzer bir soru da ben sormak istiyorum

    time() fonksiyonu ile veritabanıma kayıt geliyor.

    between current_timestamp and current_timestamp - interval 24 hour

    yi kullansam o andan itibaret 24 saat geriye giderek veri döndürecek

    peki bunu belirli bir dilimde yapmanın bir yolu var mı

    mesela son 24 saat olarak değil de söyle olsa
    şu an saat 05.06.2015 12.01 bunun karşığı zaman damgası 1433494865 olsun
    bana bundan geriye 24 saati değil de 04.06.2014 00:00 - 04.06.2014 23:59 aralığında olan geçmiş tam bir günün aralığı versin?

    bu mümkün mü?
    Tabiki mümkün

    mysql> select date_format(CURRENT_TIMESTAMP,"%Y-%m-%d 00:00:00");
    +----------------------------------------------------+
    | date_format(CURRENT_TIMESTAMP,"%Y-%m-%d 00:00:00") |
    +----------------------------------------------------+
    | 2015-06-09 00:00:00                                |
    +----------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select date_format(CURRENT_TIMESTAMP,"%Y-%m-%d 23:59:59");
    +----------------------------------------------------+
    | date_format(CURRENT_TIMESTAMP,"%Y-%m-%d 23:59:59") |
    +----------------------------------------------------+
    | 2015-06-09 23:59:59                                |
    +----------------------------------------------------+
    1 row in set (0.00 sec)