delphi4arab منتديات دلفي للعرب
تقسيم التلاميذ على المهن؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تقسيم التلاميذ على المهن؟ (/showthread.php?tid=10624)

الصفحات: 1 2


RE: تقسيم التلاميذ على المهن؟ - ALG2009 - 22-02-2020

قمت بالتغيير في الكود الذي قدمته لي وإستغنيت على الجدول Job للحساب بالنسب ولكن جملة الإستعلام داخل First تسببت في عدم تنفيذ الإستعلام ولم أتأكد من صحه النتيجة
أتمنى تصحيح الكود

كود :
/*doctors*/ select * from ( select first (select cast(((count(*)/3)+0.9)as integer) from student) s.student_name from student s order by s.student_test_result desc ) union all /*teachers*/ select * from ( select first (select cast(((count(*)/3)+0.5)as integer) from student) skip ((select cast(((count(*)/3)+0.9)as integer) from student)) s.student_name , 'Teacher' job_name from student s order by s.student_test_result desc ) union all /*engineers*/ select * from ( select first (select cast(((count(*)/3))as integer) from student) skip ((select cast(((count(*)/3)+0.5)as integer) from student )) s.student_name from student s order by s.student_test_result desc )


(21-02-2020, 05:17 PM)Lam.Abdeldjalil كتب : هذا سؤال أكاديمي ؟ لا يمكن ان يكون في الواقع Wink


كيف أحل مشكلة عدم التنفيذ لأتأكد من أنه يمكن في الواقع  Tongue

أ


RE: تقسيم التلاميذ على المهن؟ - Lam.Abdeldjalil - 22-02-2020

قصدي لا يمكن أن تطلب مناصب الشغل بالنسب بل بأعداد ثابته ( إذا كان مثال تعليمي يمكن Smile  )

بالـ sql يمكن باستعمال round لكن لن تعطيك دائما نتيجة صحيحة حسب الجدول المعطى
مثال
كود :
select round(4*0.35),round(4*0.35),round(4*0.3) from rdb$database
4 مناصب : 1 طبيب 1 معلم 1 مهندس و الباقي 1  ضائع
------------------------------------------------------------------
الحل :
1 - إن كان عدد الإحتمالات كبير إستعمل حلك جدول.
2 - إن كان عدد الإحتمالات صغير و ثابت إستعمل مصفوفة سجلات  مثال :

كود :
    TJobItem = record       Job_cnt : smallint;       doctors : smallint;       engineers : smallint;       teachers : smallint;     end;

كود :
   jobs : array[1..3] of TJobItem =     (       (Job_cnt : 1; doctors :1; engineers:0; teachers:0 ),       (Job_cnt : 2; doctors :1; engineers:1; teachers:0 ),       (Job_cnt : 3; doctors :2; engineers:1; teachers:0 )     ) ;
لجلب عدد الأطباء لـ 3 مناصب نستعمل
كود :
showmessage(jobs[3].doctors.tostring);



RE: تقسيم التلاميذ على المهن؟ - ALG2009 - 22-02-2020

بالفعل لا يمكن  Blush
جزاك الله خيرا