PDA

View Full Version : سوال: نحوه خروجی از دیتابیس و مرتب سازی اعداد



sadeghkhafan
پنج شنبه 02 شهریور 1391, 18:24 عصر
سلام
من میخوام از یک کوئری 5 تا خروجی آخر بر اساس ID رو بده بیرون و بعد OID اونها رو با هم مقایسه کنه و بر اساس بزرگترین عدد به کوچکترین عدد مرتب کنه.
نمی دونم منظورم رو درست رسوندم یا نه. ما یه دستور برای دیتابیس داریم که خب برای این روش من جواب گو نیست.

$sql=mysql_query("SELECT * FROM gamesinfo_book ORDER BY `sorts` , `emtiazd` DESC LIMIT 5");
میخوام اول بر اساس sorts ( که عددی هست) بیاد از دیتابیس بیاره بیرون سپس اون 5 تا رو emtiazd( که عددی هست) رو نگاه کنه و از بزرگ به کوچیک مرتب کنه و نشون بده.

من توی راه حلش مونم کسی می تونه کمکم کنه ؟ :متفکر:

desatir7316
پنج شنبه 02 شهریور 1391, 19:13 عصر
سلام
تا جای که من فهمیدم می خوای 5 رکورد آخر رو بر اساس id به صو رت نزولی بکشی بیرون
اگه همینه که می شه :
SELECT *
FROM `sadegh`
ORDER BY `id` DESC
LIMIT 5

sadeghkhafan
پنج شنبه 02 شهریور 1391, 20:07 عصر
خب این اولش هست، بعد می خوام همین 5 تا id رو داده هاش رو بر اساس emtiazd که داخل همان کوئری هست مرتب کنه.

مثلا اینطوری خروجی میاد :
30 - 15
29 - 18
28 - 12
27 - 11
26 - 19

سمت راست id هست و سمت چپ emtiazd . حال که آخرین id هارو کشید بیرون ، براساس emtiazd مرتب کنه و اطلاعات دیگه ای که داخل کوئری هر id هست رو مطابق با مرتب شدن emtiazd نمایش بده.
( اینم بگم منظور من از id همان sorts هست یعنی یه فیلد sorts دارم که توش عدد وارد میشه)

desatir7316
جمعه 03 شهریور 1391, 10:38 صبح
select
*
from
(select
id
from
sadegh
order by
id desc limit 5) q
join
sadegh
on
sadegh.id=q.id
order by
sadegh.emtiaz asc

sadeghkhafan
شنبه 04 شهریور 1391, 12:39 عصر
ممنون عزیز، درست شد. :قلب:

sadeghkhafan
دوشنبه 20 آذر 1391, 18:22 عصر
من کد مورد نظر خود رو نوشتم، یک مشکلی پیدا کردم، اونم اینکه موقع نمایش خروجی، اگر 2 تا از کوئری ها تاریخشون یکسان باشد. هنگام مرتب سازی 2 بار اون کوئری های مشابه رو نشون میده. مشکل کجاست ؟
کد من :

$sql9=mysql_query("select
*
from
(select
*
from
info_book WHERE active=1
order by
datesoon desc limit 10) q
Join
info_book
on
info_book.datesoon=q.datesoon
order by
info_book.emtiazd DESC limit 1, 9");
کد بالا بر اساس تاریخ میاد 10 تای آخر رو میگیره و بعد بر اساس امتیاز مرتب میکنه و نمایش میده. حال موقعی که تاریخ 2 تا یا چند تاشون یکسان باشه، هر کدوم رو 2 بار زیر هم نشون میده.