KASKUS

[ ASK ] MENGAMBIL DATA TERAKHIR DI MYSQL

Maaf gan klo Thread ini sudah ada, Saya cuma mo nanya bagaimana Query menarik data transaksi penjualan dilimit hanya 3 saja tapi per masing-masing item. Contoh misal di table transaksi penjualan ada 1000 item, saya hanya ingin mengeluarkan 3 transaksi terakhir dari masing-masing item, mohon bantuannya mastah....
lah kan tinggal di order by id DESC LIMIT 3...
klo ga salah itu munculnya cuma 3 doang ya gan, CMIIW.

ane pengennya munculnya masing- masing item.
contoh :
item a muncul 3 transaksi terakhir
item b muncul 3 transaksi terakhir
item c muncul 3 transaksi terakhir
.....dst

nb: itu narik dari satu tabel doank : tabel transaksi.


Mohon dibantu mastah
Quote:Original Posted By bragajulan
klo ga salah itu munculnya cuma 3 doang ya gan, CMIIW.

ane pengennya munculnya masing- masing item.
contoh :
item a muncul 3 transaksi terakhir
item b muncul 3 transaksi terakhir
item c muncul 3 transaksi terakhir
.....dst

nb: itu narik dari satu tabel doank : tabel transaksi.


Mohon dibantu mastah


mungkin logikanya kaya gini kali ya gan
Code:

SELECT *
FROM
(SELECT *,
row_number() over (PARTITION BY item_no ORDER BY trx_date DESC) AS rownum
FROM item) AS a
WHERE a.rownum <=3;


ane ga tau coding kaya gini work ga di SQL
Quote:Original Posted By bragajulan
klo ga salah itu munculnya cuma 3 doang ya gan, CMIIW.

ane pengennya munculnya masing- masing item.
contoh :
item a muncul 3 transaksi terakhir
item b muncul 3 transaksi terakhir
item c muncul 3 transaksi terakhir
.....dst

nb: itu narik dari satu tabel doank : tabel transaksi.


Mohon dibantu mastah


ane pikir tinggal ditambahin "group by item" doank..

sorry klo salah. maklum ane newbie jg...

coba seperti ini kalau untuk mysql.
Code:

SELECT
t.RowNum,
t.CustNo,
t.Tanggal
FROM
(
SELECT
@rownum := @rownum + 1,
IF(@part = r.CustNo, @rank := @rank + 1, @rank := 1) AS RowNum,
@part := r.CustNo,
r.*
FROM
(
SELECT
o.*
FROM
YOUR_TABLE AS o
ORDER BY
o.CustNo ASC,
o.Tanggal DESC
) AS r
CROSS JOIN
(
SELECT
@rownum := 0,
@rank := 0,
@part := NULL
) AS v
) AS t
WHERE
t.RowNum <= 3
kamu query union per product limit 3
Quote:Original Posted By Mastela


mungkin logikanya kaya gini kali ya gan
Code:

SELECT *
FROM
(SELECT *,
row_number() over (PARTITION BY item_no ORDER BY trx_date DESC) AS rownum
FROM item) AS a
WHERE a.rownum <=3;


ane ga tau coding kaya gini work ga di SQL


Quote:Original Posted By newtdk


ane pikir tinggal ditambahin "group by item" doank..

sorry klo salah. maklum ane newbie jg...



Quote:Original Posted By soeleman
coba seperti ini kalau untuk mysql.
Code:

SELECT
t.RowNum,
t.CustNo,
t.Tanggal
FROM
(
SELECT
@rownum := @rownum + 1,
IF(@part = r.CustNo, @rank := @rank + 1, @rank := 1) AS RowNum,
@part := r.CustNo,
r.*
FROM
(
SELECT
o.*
FROM
YOUR_TABLE AS o
ORDER BY
o.CustNo ASC,
o.Tanggal DESC
) AS r
CROSS JOIN
(
SELECT
@rownum := 0,
@rank := 0,
@part := NULL
) AS v
) AS t
WHERE
t.RowNum <= 3


Quote:Original Posted By pekoy154
kamu query union per product limit 3


thanks untuk Agan Mastela dan Agan Soeleman, ane bingung liat codingnya ente master banget ney kayanya. ane coba dulu deh.

thanks buat newtdk, ane udah nyoba tapi tolong lebih diperjelas lagi, soalnya ane newbie banget ney jadi klo cuma sepotong gitu ane rada bingung.

thanks juga buat Agan pekoy, bisa minta tolong dicontohin ga querynya, soalnya ane ga ngerti?

thanks ya buat agan-agan yang udah mau jawab.
NB: ane cuma mo narik 2 field doank yaitu item dan tanggal transaksi dari tabel transaksi
Reperensi buat ente gan....

http://stackoverflow.com/questions/1...for-each-group

column dan nama table disesuaikan dengan term & condition.

...
De. javu
udah ane coba querynya loading terus....
Quote:Original Posted By ruins
Reperensi buat ente gan....

http://stackoverflow.com/questions/1...for-each-group

column dan nama table disesuaikan dengan term & condition.



Thanks gan Ruins atas Link nya, masalah ane udah terjawab berkat link yang agan kasih.