রুবেলে অন রুবি: একটি ডিবি কলাম থেকে সর্বাধিক মান প্রাপ্ত


125

বর্তমানে আমি আমার ডিবিতে স্ট্রেট-আপ এসকিউএল কোয়েরি করতে পারি:

SELECT MAX(bar) FROM table_name

এবং এটি সেই টেবিলের সর্বোচ্চ মান দিয়ে ফিরে আসে returns আমি যখন রিলে একটি সমতুল কল হিসাবে বিবেচনা করি তখনই এটি কার্যকর হয় না। আমি ডাকছি:

Bar.all(:select => "Max(bar)")

এটি কেবল এর সাথে ফিরে আসে:

[#<Bar >]

আমি যে কলামটিতে কল করছি সেটি শনাক্তকরণের একটি সিরিজ, আমি সবচেয়ে বড়টির সন্ধান করছি। এটি কি জেলাগুলিতে প্রবেশ করার অন্য কোনও উপায় আছে?

উত্তর:


272

আপনার মডেলের নামটি ধরে নেওয়া Barএবং এটির একটি কলামের নাম রয়েছে bar, এটি কাজ করা উচিত:

Bar.maximum("bar")

আরও তথ্যের জন্য গণনার উপর চমৎকার রেল গাইড বিভাগটি দেখুন।


আহ হা! ঠিক তুমি আছ, এটা করেছ। আমি আপনার উত্তরটি শীঘ্রই বন্ধ করে দেব যা শীঘ্রই আমার কাছে আসবে। ধন্যবাদ!
কিবোর্ড

6

আরও একটি উপায়

Bar.select("Max(bar) as max_bar").first.max_bar

5
তুমি কেন এটা করতে চাও? আরও ভার্বোস, এবং ঠিক একই ক্যোয়ারী কার্যকর করে Bar.maximum(:bar)তাই আমি এই উত্তরটির "সুপারিশ" করার কোনও কারণ দেখি না ...
নাথনভদা

19
উদাহরণস্বরূপ, আপনি যদি সর্বনিম্ন এবং সর্বাধিক উভয়ই চান:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
শ্যাভিত শ্যালিত

প্রশ্ন করা ব্যক্তিটি কেবল সর্বোচ্চটি চেয়েছিল wanted
ক্রিস পিটারস

1
তিনি প্রশ্নের সঠিক উত্তর দিয়েছেন। সম্ভবত এটি সেরা উত্তর নয় তবে তিনি এতে কোনও ভুল করেন নি।
david0116
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.