التخطي إلى المحتوى الرئيسي

المشاركات

عرض المشاركات من فبراير, ٢٠١٣

أوراكل وتحديد عدد الصفوف الناتجة

لم أعتد العمل على ORACLE، كانت قاعدة البيانات التي أستخدمها عادة هي mysql، لكن في وظيفتي الجديدة كان علي أن أعمل على جلب البيانات لبرنامجي من قاعدة أوراكل، كانت المشكلة هي في تحديد عدد الصفوف الناتجة عن عملية البحث، وهي ما يفترض بها أن تتم ببساطة عن طريق كلمة limit في نهاية جملة SQL. إلا أنها لم تعمل اطلاقا، بقليل من البحث (ومساعدة من مدير قواعد البيانات) وجدت التالي: في أوراكل تجعل جملتك بالكامل جملة فرعية داخل الجملة الأكبر التي تقوم بالتحديد، خذ باعتبارك أن كل صف في أوراكل يسبقه حقل ROWNUM المشير لرقم الحقل، قم بتضمينه في الجدول وأعطه اسما بديلا لتتمكن من التعاطي معه في جملة التحديد الخارجية. مثلا، إذا كانت جملتك هي: SELECT f1,f2,f3 FROM my_table عليك أولا أن تقوم باضافة حقل يحمل أرقام الصفوف كالتالي: SELECT ROWNUM rn, f1, f2, f3 FROM my_table الآن صارت الجملة السابقة جدولا يمكنك وضعه كجملة فرعية في جملة تحديد أكبر، كالتالي: SELECT * FROM (SELECT ROWNUM rn, f1, f2, f3 FROM my_table) WHERE rn BETWEEN :Min AND :Max وهذه الطريقة ليست الأسرع وإن كانت الأوضح منطقيا