Query untuk memilih max(date) dari satu tabel

Database dan Structured Query Language

Query untuk memilih max(date) dari satu tabel

Postby b_squared » 01 Jul 2010, 17:45

Mau tanya query, tapi gak jumpa topik buat database, jadi masuk OOT sajalah..

Saya punya tabel pada firebird 2.1 sbb:
idrecord ; iduser ; tgl_login
====================
1 ; 1 ; 1/1/2009
2 ; 1 ; 2/3/2010
3 ; 2 ; 4/5/2009
4 ; 3 ; 6/7/2009
5 ; 2 ; 8/9/2010
6 ; 3 ; 9/9/2010

bagaimana querynya untuk menghasilkan rekord dari tgl terakhir setiap user login. Hasil dari query yg saya inginkan adalah sbb:
idrecord ; iduser ; tgl_login
====================
2 ; 1 ; 2/3/2010
5 ; 2 ; 8/9/2010
6 ; 3 ; 9/9/2010

saya sudah coba dengan query berikut, tapi tidak berhasil:
Code: Select all
  1. select idrecord, iduser, max(tgl_login)

  2. from mytable

  3. group by iduser

[font=Tahoma][align=center]Any Idea???[/align][/font]
User avatar
b_squared
Junior Member
 
Posts: 29
Joined: 28 May 2010, 10:50

RE: Query untuk memilih max(date) dari satu tabel

Postby dadanarifin » 01 Jul 2010, 17:54

select first 1 * from mytable

seperti
klo di mysql kan limit
klo di mssql server kan top percent


jadi jumlah yang ingin di tampilkan berapa record

terus tambahin ja order by field desc or asc buat urutannya
dadanarifin666.blogspot.com
[align=center][/align]Maju terus Dunia IT Indonesia
User avatar
dadanarifin
Member
 
Posts: 53
Joined: 01 Jul 2010, 08:55

RE: Query untuk memilih max(date) dari satu tabel

Postby b_squared » 01 Jul 2010, 17:57

@DADANARIFIN : saya bukan mau memilih row pertama, tapi row dimana setiap user terakhir login (max(tgl_login))
[font=Tahoma][align=center]Any Idea???[/align][/font]
User avatar
b_squared
Junior Member
 
Posts: 29
Joined: 28 May 2010, 10:50

RE: Query untuk memilih max(date) dari satu tabel

Postby aday-gate » 01 Jul 2010, 18:08

nubi coba bantu..
ada table user nya gak mas?
Code: Select all
  1. select m.idrecord,m.iduser,max(m.tgl_login)

  2. From mytable m,tb_user u

  3. where m.iduser = u.iduser

[font=Tahoma]"Any fool can write code that a computer can understand.
Good programmers write code that humans can understand." - Martin Fowler-
[/font]
User avatar
aday-gate
Member
 
Posts: 72
Joined: 06 May 2010, 00:55

RE: Query untuk memilih max(date) dari satu tabel

Postby b_squared » 01 Jul 2010, 18:18

@aday-gate:

Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
[font=Tahoma][align=center]Any Idea???[/align][/font]
User avatar
b_squared
Junior Member
 
Posts: 29
Joined: 28 May 2010, 10:50

RE: Query untuk memilih max(date) dari satu tabel

Postby andrians_a » 01 Jul 2010, 18:21

mo coba ngbantu gan.. :angel2:
itu kn ada id record. id record itu tersimpan increment saat user login kan??
klo iya pake query berikut

Code: Select all
  1. SELECT idrecord, iduser, tgl_login order by idrecord desc limit 1



klo bukan tersimpan saat user login pakai ini

Code: Select all
  1. SELECT idrecord, iduser, max(tgl_login)

  2. FROM mytable order by tgl_login desc limit 1


jgn lupa tgl_loginnya diberi index


cuma mencoba membantu.. maaf kalau salah. mungkin para master bisa membenarkan :):redface:
ganti signature, takut di cegat ama bang akismet.. :p
User avatar
andrians_a
Member
 
Posts: 163
Joined: 16 May 2010, 01:05

RE: Query untuk memilih max(date) dari satu tabel

Postby dadanarifin » 01 Jul 2010, 18:24

oh gitu... berarti kamu harus benahin dulu relasi tabelnya....
untuk group by isi dari field tidak bisa dihilangkah tetapi hanya di satukan..

saran saya bikin 2 tabel
1.untuk master usernya..
2.untuk transaksi loginnya...

tar kmu bisa urutkan di tabel transaksi loginnya... order by / sort field tanggal loginnya....
sekali lagi untuk penggunaan group by tidak dapat menghilangkan isi field tersebut..
tetapi bisa menggabungkan isi field yang valuenya sama......

OK.. kita disini saling bantu.. and bagi" ilmu ok...
dadanarifin666.blogspot.com
[align=center][/align]Maju terus Dunia IT Indonesia
User avatar
dadanarifin
Member
 
Posts: 53
Joined: 01 Jul 2010, 08:55

RE: Query untuk memilih max(date) dari satu tabel

Postby aday-gate » 01 Jul 2010, 18:34

b_squared wrote:@aday-gate:

Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)

pake Group by ya?
Code: Select all
  1. SELECT m.idrecord,m.iduser,max(m.tgl_login)

  2. FROM mytable m,tb_user u

  3. WHERE m.iduser = u.iduser

  4. Group by m.iduser,m.idrecord

[font=Tahoma]"Any fool can write code that a computer can understand.
Good programmers write code that humans can understand." - Martin Fowler-
[/font]
User avatar
aday-gate
Member
 
Posts: 72
Joined: 06 May 2010, 00:55

RE: Query untuk memilih max(date) dari satu tabel

Postby D.E » 01 Jul 2010, 18:50

Saya kurang ahli dlm SQL Query tapi coba tambahkan ORDER BY tgl_login DESC atau by idrecord.

Code: Select all
  1. SELECT idrecord, iduser, max(tgl_login)

  2. FROM mytable

  3. GROUP BY iduser

  4. ORDER BY tgl_login DESC


NB. Maaf kalau repost di forum kakak sebelah gan :D
:idea: Dude, if you don't understand the basics and just want to get someone else write the code for you, it means you really shouldn't study computer science. Find different field!
User avatar
D.E
Senior Member
 
Posts: 638
Joined: 04 May 2010, 18:12

RE: Query untuk memilih max(date) dari satu tabel

Postby b_squared » 01 Jul 2010, 18:52

@dadanarifin, andrians: terimakasih sebelumnya.
saya sudah punya table master usernya (iduser, nama_user, group_user....dst). Tapi bukan itu yg mau saya query. Justru hasil query-nya yg mau saya join dengan table master user.

mungkin saya perjelas lagi pertanyannya:
Saya hanya mau memilih setiap idrecord, iduser,tgl_login untuk SETIAP USER, jika tgl_login user ybs adalah yang terakhir(yang terbesar /max ).
Query berikut bisa, tapi saya juga memerlukan field idrecord:
Code: Select all
  1. SELECT iduser, max(tgl_login)

  2. FROM mytable

  3. GROUP BY iduser



Query berikut hasilnya tidak seperti yg saya harapkan
Code: Select all
  1. SELECT idrecord, iduser, max(tgl_login)

  2. FROM mytable

  3. GROUP BY idrecord, iduser



Query berikut menghasilkan error
Code: Select all
  1. SELECT idrecord, iduser, max(tgl_login)

  2. FROM mytable

  3. GROUP BY iduser


Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
[font=Tahoma][align=center]Any Idea???[/align][/font]
User avatar
b_squared
Junior Member
 
Posts: 29
Joined: 28 May 2010, 10:50

Next

Who is online

Users browsing this forum: No registered users and 1 guest

cron