واضح آرشیو وب فارسی:سایت ریسک: یه query نسبتا مشکل foranyone 12 دي 1387, 00:09با عرض سلام خدمت دوستان عزیز:wink: یه جدول دارم با سه تا فیلد: ID وTime و vazn می خوام ماکزیمم تایم رو انتخاب کنم ، اگه یکتا و یونیک نبود اونی انتخاب میشه که وزن کمتری داره! Query مناسب چیه؟ ممنون از راهنماییتون:wink::wink::wink: 25mordad 12 دي 1387, 04:11SELECT * FROM yourtable ORDER BY `yourtable`.`time` ASC , `yourtable`.`vazn` DESC LIMIT 1 , 1 I,NoBody 12 دي 1387, 06:23اصلاحيه كد قبل : SELECT * FROM yourtable ORDER BY `yourtable`.`time` ASC , `yourtable`.`vazn` DESC LIMIT 0 , 1 البته اگر باز هم ممكنه جواب يكتا نگيريد، بهتره محدوديت ليميت رو تعداد بيشتري بگذاريد و يا اصلاً نگذاريد و توي كد PHP بررسي كنيد كه بالاترين كدوم هست foranyone 12 دي 1387, 07:59خیلی ممنونم ازتون :wink: ولی من می خوام الویت تحت هر شرایطی با تایم بیشتر باشه احیانا اگه تایم ها با هم برابر بودن هرکدوم وزن کمتر داره احساس می کنم Query شما همیشه درست جوب نده چون شرطی توش نیست نظرتون چیه؟ 25mordad 12 دي 1387, 11:43به نظر من دقیقا همون چیزیه که می خوای بعدشم چرا یه تست نمی کنی خودت ببینی .. امتحان کردنش 0.0004 ثانیه طول می کشه foranyone 12 دي 1387, 12:20امتحان کردم غلط جواب میده SELECT * FROM sabok ORDER BY `sabok`.`time` DESC , `sabok`.`vazn` ASC نتیجه حاصل رو براتون پیوست کردم درست جواب میده جز داخل اون مستطیل قرمز که پس و پیش انتخاب شده Webber 12 دي 1387, 14:20سلام یادمه دوره ی دبیرستان یه همچین چیزی می نوشتیم برای اینطور کارها.شما هم می تونید تست کنید. select max(time) from table where (select count(distinct time)<count(time)) or ((select min(burden))=min(burden)); موفقیت foranyone 12 دي 1387, 15:35دوست عزیز کد شما فقط ماکس رو تعین می کنه و از لیست خبری نیست! من لیست لازم دارم کد قبلی خیلی خوب کار می کردن نمی دونم چرا فقط یه مورد رو اشتباه می نوشت :shock: خیلی جالبه که الان داشتم این کد رو امتحان می کردم SELECT * FROM sabok ORDER BY `sabok`.`vazn` ASC بازم 130 رو قبل 20 نوشته!!!!!!!!!!!!!!!!!!!!!!:shock::shock::sho ck::shock: میگم نکنه SQL من order by کار نمیکنه!!!!!!!!!!!!:lol: foranyone 12 دي 1387, 15:49بچه ها مشکل رو پیدا کردم علتش این بود که من نوع فیلد هام رو به int تغیر نداده بودم ! کد زیر جواب میده ممنون از همه شما عزیزان زنده باشین SELECT * FROM sabok ORDER BY `sabok`.`time` DESC , `sabok`.`vazn` ASC 25mordad 12 دي 1387, 17:21ایولا ... خودت فهمیدی دیگه foranyone 12 دي 1387, 22:55ببخشید ا یه سوال دیگه هم داشتم :-?:cry: اگه بخوام تو این دستور SQL : SELECT teamname,vazn,time FROM sabok ORDER BY `sabok`.`time` DESC,`sabok`.`vazn` ASC teamname تکراری دیگه نشون داده نشه چیکار باید کنم؟ از دستور Disticnt اول teamname استفاده می کنم ولی درست جواب نمیده! چون محتویات بقیه فیلد های سطر شبیه قبلی نیست فکر میکنه رکورد منحصر به فرد جدیدی انتخاب شده ولی من می خوام یه teamname فقط یه بار انتخاب شه ! I,NoBody 13 دي 1387, 11:11SELECT teamname,vazn,time FROM sabok ORDER BY `sabok`.`time` DESC,`sabok`.`vazn` ASC GROUP BY teamname foranyone 13 دي 1387, 11:15دوست عزیز اینو امتحان کردم ولی faield میشه!:cry: foranyone 13 دي 1387, 19:15دوستان عزیز من خیلی روش ها رو امتحان کردم ولی نشد شما اگه پیشنهادی دارین خوشحال میشم بشنوم:wink: foranyone 13 دي 1387, 22:35کسی نبود؟:d 25mordad 13 دي 1387, 23:19آقا ببخشید یه خورده کار داشتم عجله ای نوشتم وگرنه می شه تمیز تر هم نوشت .. خلاصه عجله ای شد ببین کار می کنه SELECT teamname,vazn,time FROM sabok WHERE teamname = (SELECT DISTINCT teamname FROM sabok ) ORDER BY `sabok`.`time` DESC,`sabok`.`vazn` ASC foranyone 13 دي 1387, 23:24اقا خواهش می کنم ارادتمندیم متاسفانه این error رو میده Subquery returns more than 1 row 25mordad 13 دي 1387, 23:56اقا ببخشید من همین جور فکر نکرده می ذارم .. اگه این کار نکرد دیتا بیستو بفرست تا من یه خورده روش فکر کنم ببینم چی می خوای SELECT `teamname`,`vazn`,`time` FROM sabok WHERE teamname IN (SELECT DISTINCT teamname FROM sabok ) ORDER BY `sabok`.`time` DESC,`sabok`.`vazn` ASC foranyone 14 دي 1387, 00:08این ارور نداشت ولی جوابی رو که من می خوام نمیده ! جدول رو براتون Export کردم یه دیتابیس بسازید و توش اجرا کنید ببخشید تو رو خدا زحمت می دم :wink: فایل تکست رو هم دانلود کنیند یه سری توضیحات بیشتر نوشتم. زنده باشی 25mordad 14 دي 1387, 04:22خوب .... فایل ها رو نگاه کردم .. دقیقا فهمیدم چی می خوای ولی تا جایی که من می دونم در حال حاضر این یک باگ توی مای اس کی ال هست که نمی شه با دستور DISTINCT دستور ORDER BY را استفاده کرد یعنی می شه استفاده کرد ولی کار نمی کنه ... خوب اگه از بچه ها کسی می دونه که چجوری با دستورات اس کیو ال می شه این باگ رو دور زد بگه آگاهی ما هم بره بالا ولی بهتره که با برنامه نویسی این مشکلتو حل کنی یعنی بعد از این که جدولو گرفتی چک کنی ببینی اگر اسم teamname یکی بود یه ردیف دیگه بخونی و همین طور .... بازم می گم تا جایی که من می دونم این یه باگ تو مای اس کیو ال هست که DISTINCT با ORDER BY کار نمی کنه ولی شاید بشه دورش زد .. هر کی بلد هست بگه foranyone 14 دي 1387, 09:4425 مرداد عزیز خیلی مرسی حسابی تو زحمت افتادی منم احساس کرده بودم که کار نمیکنه منتظر کمک بقیه بچه ها هستیم کسی نظری داره؟ foranyone 14 دي 1387, 11:08من مشکلم رو از طریق برنامه نویسی حل کردم ولی دوستان خواهشا این بحث رو ادامه بدیم ببینیم واقعا این یه باگ برا mysql محسوب میشه یا نه!
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 245]