PDA

View Full Version : حرفه ای: نمایش 3 رکورد آخر



mofrad
پنج شنبه 23 خرداد 1392, 10:50 صبح
سلام
من دو تا جدول دارم یکی محصول یکی شرکت.
میخوام در آخرین محصولات از هر شرکت سه محصول آخرش رو نشون بدم. چطوری میشه؟
برای یک محصول آخر از هر شرکت کد زیر میشه ولی برای چند تا چی میشه؟
SELECT * from (select * from products order by id desc) as p group by company_id

امیـرحسین
پنج شنبه 23 خرداد 1392, 11:32 صبح
این آدرس رو ببینید: MySQL - How To Get Top N Rows per Each Group (http://www.sqlines.com/mysql/how-to/get_top_n_each_group)
با Local Variables این کار رو کرده. این مدلی:
SELECT * FROM (
SELECT *,
@rank := IF(@current_company = company_id, @rank + 1, 1) AS rank,
@current_company := company_id
FROM products ORDER BY id DESC
) AS ranked
WHERE rank <= 3;

mofrad
پنج شنبه 23 خرداد 1392, 11:58 صبح
از پاسختون ممنون. ولی نمیدونم چرا کار نمیکنه و همه رکوردها رو برمی گردونه!

hamid_hr
پنج شنبه 23 خرداد 1392, 12:32 عصر
چپه مرتب سازي كن بعد با top(3) اون اجرا كن

امیـرحسین
شنبه 25 خرداد 1392, 08:53 صبح
از پاسختون ممنون. ولی نمیدونم چرا کار نمیکنه و همه رکوردها رو برمی گردونه!
اگر با برنامه‌ای تست کردید، برنامه‌های Client احتمالا Session رو دستکاری میکنن (Local Variable براساس Session هست). من با Navicat اون کوئری رو تست کردم ولی دفعه اول همه رو میاره از دفعه دوم درست میشه (!). ولی تو برنامه درست کار میکنه. شاید برای شما هم همین مشکل باشه.

mofrad
دوشنبه 27 خرداد 1392, 08:52 صبح
توی برنامه هم تست کردم ولی نشد! شاید در نسخه های mysql متفاوته؟

majidrezaei2007
سه شنبه 28 خرداد 1392, 14:35 عصر
SELECT * FROM products ORDER BY id DESC LIMIT 3