SQL Mantık Hatası

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

SQL Mantık Hatası

Mesaj gönderen MakPRO »

mrb

Kullanıcıların giriş zamanlarını ve ip adreslerini tutan bir table ım var
field yapsı

Kod: Tümünü seç

 
      UserName  LoginTime  IpAddr  

      MakPRO 2006-09-20 11:11:25 xxx.xxx.xxx.xxx
      MakPRO 2006-09-20 08:13:37 xxx.xxx.xxx.xxx
      MakPRO 2006-09-20 06:58:29 xxx.xxx.xxx.xxx
      NuLL 2006-09-20 06:38:35 xxx.xxx.xxx.xxx
      FeRHaT 2006-09-20 06:35:14 xxx.xxx.xxx.xxx
      brewihard 2006-09-20 06:15:53 xxx.xxx.xxx.xxx
      brewihard 2006-09-20 06:15:00 xxx.xxx.xxx.xxx
      brewihard 2006-09-20 06:14:36 xxx.xxx.xxx.xxx
      brewihard 2006-09-20 06:13:36 xxx.xxx.xxx.xxx
      brewihard 2006-09-20 06:05:31 xxx.xxx.xxx.xxx
      Carnage!!! 2006-09-19 11:00:00 xxx.xxx.xxx.xxx
      <*yDs* redKID < 2006-09-19 08:07:38 xxx.xxx.xxx.xxx
      horutumcu 2006-09-19 07:01:58 xxx.xxx.xxx.xxx
      kenwood 2006-09-18 14:28:46 xxx.xxx.xxx.xxx
      <*yDs* redKID < 2006-09-18 13:06:26 xxx.xxx.xxx.xxx
      <*yDs* redKID < 2006-09-17 14:54:50 xxx.xxx.xxx.xxx
      seth 2006-09-17 11:54:42 xxx.xxx.xxx.xxx
      MakPRO 2006-09-17 01:24:27 xxx.xxx.xxx.xxx
      brewihard 2006-09-16 10:04:03 xxx.xxx.xxx.xxx
      [acEmi]ZeBaNi 2006-09-16 02:45:07 xxx.xxx.xxx.xxx
      MakPRO 2006-09-15 19:22:38 xxx.xxx.xxx.xxx
      ozan1903 2006-09-15 11:08:17 xxx.xxx.xxx.xxx 
      theTARANTULA 2006-09-15 08:33:17 xxx.xxx.xxx.xxx 
      MuuRraadD 2006-09-15 06:48:25 xxx.xxx.xxx.xxx
      soluksuz 2006-09-15 02:06:04 xxx.xxx.xxx.xxx
      [acEmi]ZeBaNi 2006-09-14 05:03:12 xxx.xxx.xxx.xxx
      MakPRO 2006-09-14 05:03:01 xxx.xxx.xxx.xxx
      [acEmi]ZeBaNi 2006-09-14 04:26:28 xxx.xxx.xxx.xxx
      [acEmi]ZeBaNi 2006-09-14 04:24:28 xxx.xxx.xxx.xxx
      [acEmi]ZeBaNi 2006-09-14 04:14:09 xxx.xxx.xxx.xxx
şeklinde . ben ise en son giriş yapan 10 kullanıcının listesini almak istiyorum. mantık olarak şöyle bir sql komutu verdim ama sonuçları istediğim şekilde çıkmıyor . nerde yanlış yapıyorum

Kod: Tümünü seç

SELECT * FROM `MemberLoginTime` group by UserName order by LoginTime desc 
sql komutu bu şekilde ama en son giriş yapan 10 kullanıcıyı göstermiyor.

@aslangeri
Ip Adreslerini gizleseniz sanırım daha iyi olur. ;)

mceL
Üye
Mesajlar: 56
Kayıt: 28 Eyl 2003 01:19
Konum: Bursa
İletişim:

Mesaj gönderen mceL »

DISTINCT kullanmalısınız.

Kod: Tümünü seç

SELECT DISTINCT(UserName) FROM MemberLoginTime GROUP BY UserName ORDER BY LoginTime desc LIMIT 10

Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

Mesaj gönderen MakPRO »

mceL yazdı:DISTINCT kullanmalısınız.

Kod: Tümünü seç

SELECT DISTINCT(UserName) FROM MemberLoginTime GROUP BY UserName ORDER BY LoginTime desc LIMIT 10
Distinct kullandığımda logintime sorgulamada görünmüyor sadece UserName görünüyor .

Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Eğer doğru anladıysam bir kişi arka arkaya iki defa giriş yapsa bile onu tek kişi olarak kabul edip en son on girişi değil en son 10 giriş yapan farklı kişiyi almak istiyorsunuz....
Bu kodun giriş zamanlari ile birlikte son giren farklı 10 kişiyi vermesi lazim...

Kolay gelsin....

Kod: Tümünü seç

SELECT distinct top 10 MLT1.UserName, 
GirisZamani=(Select max(MLT2.LoginTime  ) from MemberLoginTime as MLT2 where MLT1.UserName=MLT2.UserName)
FROM MemberLoginTime as MLT1
order by MLT1.LoginTime desc
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)

Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

Mesaj gönderen MakPRO »

hocam hata verdi ben mysql de kullanıyorum. sanırım mysql de bazı sql kelimelerini kabul etmiyor.
fahrettin yazdı:Eğer doğru anladıysam bir kişi arka arkaya iki defa giriş yapsa bile onu tek kişi olarak kabul edip en son on girişi değil en son 10 giriş yapan farklı kişiyi almak istiyorsunuz....
Bu kodun giriş zamanlari ile birlikte son giren farklı 10 kişiyi vermesi lazim...

Kolay gelsin....

Kod: Tümünü seç

SELECT distinct top 10 MLT1.UserName, 
GirisZamani=(Select max(MLT2.LoginTime  ) from MemberLoginTime as MLT2 where MLT1.UserName=MLT2.UserName)
FROM MemberLoginTime as MLT1
order by MLT1.LoginTime desc

mceL
Üye
Mesajlar: 56
Kayıt: 28 Eyl 2003 01:19
Konum: Bursa
İletişim:

Mesaj gönderen mceL »

MakPRO yazdı:
mceL yazdı:DISTINCT kullanmalısınız.

Kod: Tümünü seç

SELECT DISTINCT(UserName) FROM MemberLoginTime GROUP BY UserName ORDER BY LoginTime desc LIMIT 10
Distinct kullandığımda logintime sorgulamada görünmüyor sadece UserName görünüyor .
?

SELECT UserName, logintime FROM MemberLoginTime GROUP BY UserName ORDER BY LoginTime desc LIMIT 10

http://dev.mysql.com/doc/refman/5.0/en/ ... ation.html

Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

mysql de belki top 10 terimi yoktur. Ki onun yerine de limit 10 imkanı var.... Mcel arkadaşımızın verdiği koddaki mantık ile limit 10 şeklinde değiştirerek deniyebilirsniz....

onun ötesinde hata ne verdi belki yazım hatası yapmış olabilirim. Neticede SQL cümlesini deniyemediğim için hata da olabilir... Genel mantık olarak standart bir cümle çünkü....

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)

Cevapla