আমি ভাবছি যে কোনও আইএন () ধারাতে মানগুলির ক্রম অনুসারে অর্ডার করার জন্য (সম্ভবত আরও ভালতর উপায়) আছে কিনা।
সমস্যাটি হ'ল আমার কাছে 2 টি ক্যোয়ারী রয়েছে, এটির মধ্যে একটি আইডি পেয়ে যায় এবং দ্বিতীয়টি সমস্ত তথ্য পুনরুদ্ধার করে। প্রথমটি আইডিগুলির ক্রম তৈরি করে যা আমি দ্বিতীয় দ্বারা আদেশ করতে চাই। আইডিগুলি সঠিক ক্রমে একটি আইএন () ধারাতে রাখা হয়।
সুতরাং এটি এমন কিছু হবে (অত্যন্ত সরলীকৃত):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
ইস্যুটি হ'ল দ্বিতীয় ক্যোয়ারী একই ক্রমে ফলাফলগুলি ফিরিয়ে দেয় না যে আইডিগুলি আইএন () ধারাটিতে রাখা হয়।
একটি সমাধান আমি খুঁজে পেয়েছি হ'ল সমস্ত আইডি একটি অটো ইনক্রিমেন্টিং ফিল্ডের সাথে একটি টেম্প টেবিলের মধ্যে রাখা যা পরে দ্বিতীয় ক্যোয়ারিতে যোগ হয়।
একটি ভালো বিকল্প আছে কি?
দ্রষ্টব্য: যেহেতু প্রথম ক্যোয়ারীটি "ব্যবহারকারীর দ্বারা" চালানো হয় এবং দ্বিতীয়টি একটি ব্যাকগ্রাউন্ড প্রক্রিয়াতে চালিত হয় তাই সাব-কোয়েরিগুলি ব্যবহার করে 2 কে 1 টি প্রশ্নের সাথে একত্রিত করার উপায় নেই।
আমি মাইএসকিউএল ব্যবহার করছি, তবে আমি ভাবছি যে এটি অন্যান্য ডিবিগুলির জন্য কী কী বিকল্প রয়েছে তা উল্লেখ করা কার্যকর হতে পারে।
IN
এবংFIELD
পরামিতি সমান। প্রোগ্রামের কোডে এটি করা অতিরিক্ত অতিরিক্ত জ্ঞান ব্যবহার করে দ্রুত হতে পারে। অবশ্যই, যদি আপনার সার্ভারের পারফরম্যান্স মাথায় থাকে তবে সার্ভারের চেয়ে ক্লায়েন্টের উপর এই বোঝা চাপানো বুদ্ধিমানের কাজ হতে পারে।