اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

عندي جدول  باسم TBL_Final1   يتم فيه حفظ درجات الطلاب عن طريق الفيجوال دوت نت 2019
المشكلة أريد عرض الدرجات عمودياً في التقرير حسب الفصول الدراسية وفق الشرح الآتي:
درجات الفصل الأول      درجات الفصل الثاني      مجموع درجات الفصلين
 أعمال     امتحان          أعمال    امتحان                    المجموع

الطريقة في حفظ الدرجات أفقياً حسب المصفوفات التالية:
SemesterID = رقم الفصل الدراسي 
1 = الفصل الأول
2 = الفصل الثاني
3 = مجموع درجات الفصلين
حقول الدرجات حسب عدد المواد (9) مواد دراسية
1- المصفوفة on = درجات أعمال الفصلين الأول والثاني   
2- المصفوفة to = درجات امتحان الفصلين الأول والثاني
3- المصفوفة tr = مجموع درجات أعمال الفصلين الأول والثاني

المطلوب:
كيف أستطيع تقسيم الجدول TBL_Final1 إلى ثلاث استعلامات بحيث يكون لكل فصل دراسي استعلام
حتى أستطيع عرض الدرجات في التقرير بطريقة عمودية؛ لأنني قمت بتقسيم الجدول إلى ثلاث استعلامات
وجعلت لكل فصل دراسي استعلام ولكن أراها طريقة غير مقبولة ومن الشهل التلاعب بهذه الاستعلامات

فهل يوجد طريقة أذكى وأضمن وأفضل من هذه الطريقة
علماً بأن طريقة التقرير وتنسيقه  موضحة في الصورة المرفقة مع قاعدة البيانات 

مرفق قاعدة البيانات

DataBase.zip

قام بنشر

وعليكم السلام ورحمة الله وبركاته ..

جرب هذا الاستعلام 😉 :-

SELECT S.StudentID, S1.on1 AS S1_on1, S1.on2 AS S1_on2, S1.on3 AS S1_on3, S1.on4 AS S1_on4, S1.on5 AS S1_on5, S1.on6 AS S1_on6, S1.on7 AS S1_on7, S1.on8 AS S1_on8, S1.on9 AS S1_on9, S1.to1 AS S1_to1, S1.to2 AS S1_to2, S1.to3 AS S1_to3, S1.to4 AS S1_to4, S1.to5 AS S1_to5, S1.to6 AS S1_to6, S1.to7 AS S1_to7, S1.to8 AS S1_to8, S1.to9 AS S1_to9, S1.tr1 AS S1_tr1, S1.tr2 AS S1_tr2, S1.tr3 AS S1_tr3, S1.tr4 AS S1_tr4, S1.tr5 AS S1_tr5, S1.tr6 AS S1_tr6, S1.tr7 AS S1_tr7, S1.tr8 AS S1_tr8, S1.tr9 AS S1_tr9, S2.on1 AS S2_on1, S2.on2 AS S2_on2, S2.on3 AS S2_on3, S2.on4 AS S2_on4, S2.on5 AS S2_on5, S2.on6 AS S2_on6, S2.on7 AS S2_on7, S2.on8 AS S2_on8, S2.on9 AS S2_on9, S2.to1 AS S2_to1, S2.to2 AS S2_to2, S2.to3 AS S2_to3, S2.to4 AS S2_to4, S2.to5 AS S2_to5, S2.to6 AS S2_to6, S2.to7 AS S2_to7, S2.to8 AS S2_to8, S2.to9 AS S2_to9, S2.tr1 AS S2_tr1, S2.tr2 AS S2_tr2, S2.tr3 AS S2_tr3, S2.tr4 AS S2_tr4, S2.tr5 AS S2_tr5, S2.tr6 AS S2_tr6, S2.tr7 AS S2_tr7, S2.tr8 AS S2_tr8, S2.tr9 AS S2_tr9, S3.on1 AS S3_on1, S3.on2 AS S3_on2, S3.on3 AS S3_on3, S3.on4 AS S3_on4, S3.on5 AS S3_on5, S3.on6 AS S3_on6, S3.on7 AS S3_on7, S3.on8 AS S3_on8, S3.on9 AS S3_on9, S3.to1 AS S3_to1, S3.to2 AS S3_to2, S3.to3 AS S3_to3, S3.to4 AS S3_to4, S3.to5 AS S3_to5, S3.to6 AS S3_to6, S3.to7 AS S3_to7, S3.to8 AS S3_to8, S3.to9 AS S3_to9, S3.tr1 AS S3_tr1, S3.tr2 AS S3_tr2, S3.tr3 AS S3_tr3, S3.tr4 AS S3_tr4, S3.tr5 AS S3_tr5, S3.tr6 AS S3_tr6, S3.tr7 AS S3_tr7, S3.tr8 AS S3_tr8, S3.tr9 AS S3_tr9, S3.TotalSum, S3.average, S3.Grade, S3.FailCount, S3.Result
FROM ((TBL_Students AS S LEFT JOIN TBL_Final1 AS S1 ON S.StudentID = S1.StudentID AND S1.SemesterID = 1) LEFT JOIN TBL_Final1 AS S2 ON S.StudentID = S2.StudentID AND S2.SemesterID = 2) LEFT JOIN TBL_Final1 AS S3 ON S.StudentID = S3.StudentID AND S3.SemesterID = 3;

تم استخدام LEFT JOIN بدلاً من INNER JOIN لضمان ظهور الطالب في التقرير حتى لو نقصت بيانات أحد الفصول الدراسية (في هذه الحالة ستظهر درجات ذلك الفصل فارغة بدلاً من اختفاء الطالب تماماً من التقرير) .

 

واخبرنا بالنتيجة :smile:

قام بنشر
10 ساعات مضت, Foksh said:

وعليكم السلام ورحمة الله وبركاته ..

جرب هذا الاستعلام 😉 :-

SELECT S.StudentID, S1.on1 AS S1_on1, S1.on2 AS S1_on2, S1.on3 AS S1_on3, S1.on4 AS S1_on4, S1.on5 AS S1_on5, S1.on6 AS S1_on6, S1.on7 AS S1_on7, S1.on8 AS S1_on8, S1.on9 AS S1_on9, S1.to1 AS S1_to1, S1.to2 AS S1_to2, S1.to3 AS S1_to3, S1.to4 AS S1_to4, S1.to5 AS S1_to5, S1.to6 AS S1_to6, S1.to7 AS S1_to7, S1.to8 AS S1_to8, S1.to9 AS S1_to9, S1.tr1 AS S1_tr1, S1.tr2 AS S1_tr2, S1.tr3 AS S1_tr3, S1.tr4 AS S1_tr4, S1.tr5 AS S1_tr5, S1.tr6 AS S1_tr6, S1.tr7 AS S1_tr7, S1.tr8 AS S1_tr8, S1.tr9 AS S1_tr9, S2.on1 AS S2_on1, S2.on2 AS S2_on2, S2.on3 AS S2_on3, S2.on4 AS S2_on4, S2.on5 AS S2_on5, S2.on6 AS S2_on6, S2.on7 AS S2_on7, S2.on8 AS S2_on8, S2.on9 AS S2_on9, S2.to1 AS S2_to1, S2.to2 AS S2_to2, S2.to3 AS S2_to3, S2.to4 AS S2_to4, S2.to5 AS S2_to5, S2.to6 AS S2_to6, S2.to7 AS S2_to7, S2.to8 AS S2_to8, S2.to9 AS S2_to9, S2.tr1 AS S2_tr1, S2.tr2 AS S2_tr2, S2.tr3 AS S2_tr3, S2.tr4 AS S2_tr4, S2.tr5 AS S2_tr5, S2.tr6 AS S2_tr6, S2.tr7 AS S2_tr7, S2.tr8 AS S2_tr8, S2.tr9 AS S2_tr9, S3.on1 AS S3_on1, S3.on2 AS S3_on2, S3.on3 AS S3_on3, S3.on4 AS S3_on4, S3.on5 AS S3_on5, S3.on6 AS S3_on6, S3.on7 AS S3_on7, S3.on8 AS S3_on8, S3.on9 AS S3_on9, S3.to1 AS S3_to1, S3.to2 AS S3_to2, S3.to3 AS S3_to3, S3.to4 AS S3_to4, S3.to5 AS S3_to5, S3.to6 AS S3_to6, S3.to7 AS S3_to7, S3.to8 AS S3_to8, S3.to9 AS S3_to9, S3.tr1 AS S3_tr1, S3.tr2 AS S3_tr2, S3.tr3 AS S3_tr3, S3.tr4 AS S3_tr4, S3.tr5 AS S3_tr5, S3.tr6 AS S3_tr6, S3.tr7 AS S3_tr7, S3.tr8 AS S3_tr8, S3.tr9 AS S3_tr9, S3.TotalSum, S3.average, S3.Grade, S3.FailCount, S3.Result
FROM ((TBL_Students AS S LEFT JOIN TBL_Final1 AS S1 ON S.StudentID = S1.StudentID AND S1.SemesterID = 1) LEFT JOIN TBL_Final1 AS S2 ON S.StudentID = S2.StudentID AND S2.SemesterID = 2) LEFT JOIN TBL_Final1 AS S3 ON S.StudentID = S3.StudentID AND S3.SemesterID = 3;

تم استخدام LEFT JOIN بدلاً من INNER JOIN لضمان ظهور الطالب في التقرير حتى لو نقصت بيانات أحد الفصول الدراسية (في هذه الحالة ستظهر درجات ذلك الفصل فارغة بدلاً من اختفاء الطالب تماماً من التقرير) .

 

واخبرنا بالنتيجة :smile:


بارك الله فيك على سرعة اهتمامك بالموضوع
ولكن طريقة استخلاص الكود عن طريق تجميع الاستعلامات أعرفها جيداً
وهذا هو الكود المستخدم ويعمل بنجاح

SELECT Q_Students.StudentID, Q_Students.StudentName, Q_Students.ClassName, Q_S1.StudentID, Q_S1.SemesterID, Q_S1.on1, Q_S1.on2, Q_S1.on3, Q_S1.on4, Q_S1.on5, Q_S1.on6, Q_S1.on7, Q_S1.on8, Q_S1.on9, Q_S1.to1, Q_S1.to2, Q_S1.to3, Q_S1.to4, Q_S1.to5, Q_S1.to6, Q_S1.to7, Q_S1.to8, Q_S1.to9, Q_S1.tr1, Q_S1.tr2, Q_S1.tr3, Q_S1.tr4, Q_S1.tr5, Q_S1.tr6, Q_S1.tr7, Q_S1.tr8, Q_S1.tr9, Q_S2.StudentID, Q_S2.SemesterID, Q_S2.on1, Q_S2.on2, Q_S2.on3, Q_S2.on4, Q_S2.on5, Q_S2.on6, Q_S2.on7, Q_S2.on8, Q_S2.on9, Q_S2.to1, Q_S2.to2, Q_S2.to3, Q_S2.to4, Q_S2.to5, Q_S2.to6, Q_S2.to7, Q_S2.to8, Q_S2.to9, Q_S2.tr1, Q_S2.tr2, Q_S2.tr3, Q_S2.tr4, Q_S2.tr5, Q_S2.tr6, Q_S2.tr7, Q_S2.tr8, Q_S2.tr9, Q_S3.StudentID, Q_S3.SemesterID, Q_S3.on1, Q_S3.on2, Q_S3.on3, Q_S3.on4, Q_S3.on5, Q_S3.on6, Q_S3.on7, Q_S3.on8, Q_S3.on9, Q_S3.to1, Q_S3.to2, Q_S3.to3, Q_S3.to4, Q_S3.to5, Q_S3.to6, Q_S3.to7, Q_S3.to8, Q_S3.to9, Q_S3.tr1, Q_S3.tr2, Q_S3.tr3, Q_S3.tr4, Q_S3.tr5, Q_S3.tr6, Q_S3.tr7, Q_S3.tr8, Q_S3.tr9, Q_S3.TotalSum, Q_S3.average, Q_S3.Grade, Q_S3.FailCount, Q_S3.Result
FROM Q_S3 INNER JOIN (Q_S2 INNER JOIN (Q_S1 INNER JOIN Q_Students ON Q_S1.StudentID = Q_Students.StudentID) ON Q_S2.StudentID = Q_Students.StudentID) ON Q_S3.StudentID = Q_Students.StudentID;


لكن لا أريد هذه الطريقة !!!
قلت لعله يوجد طريقة اخرى غير هه الطريقة والتي أضطر إلى تقسيم أو تجزئة الجدول إلى ثلاث استعلامات ثم عمل استعلام يتم تجميع فيه هذه الاستعلامات الثلاث في استعلام واحد
والجدول يوضح نجاح هذه الطريقة
 

قام بنشر
53 دقائق مضت, omran2015 said:

لكن لا أريد هذه الطريقة !!!
قلت لعله يوجد طريقة اخرى غير هه الطريقة والتي أضطر إلى تقسيم أو تجزئة الجدول إلى ثلاث استعلامات ثم عمل استعلام يتم تجميع فيه هذه الاستعلامات الثلاث في استعلام واحد
والجدول يوضح نجاح هذه الطريقة

ما فهمت عليك بشكل جيد :excl:

قام بنشر
6 دقائق مضت, Foksh said:

ما فهمت عليك بشكل جيد :excl:

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

قام بنشر
منذ ساعه, omran2015 said:

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

هل هذا هو المطلوب اولا .... لاني عملته لك باستعلام واحد
 

1.jpg

  • Like 1
قام بنشر (معدل)
2 ساعات مضت, ناقل said:

هل هذا هو المطلوب اولا .... لاني عملته لك باستعلام واحد
 

1.jpg


أحسنت بارك الله فيك وجزاك كل خير
وفتح عليك فتح العارفين
وزادك الله بسطةً في العلم الجسم
هذا هو المطلوب تماماً
وبما أن الاستعلام خرج بهذا الشكل الرائع و التنسيق الجمالي فأتمنى تعديل بسيط فقط ليشمل:
1- اســم الطالب 
2- الصف الدراسي
3- اسم المادة وليس رقمها
علماً بأن عدد المواد الدراسية  = (9 ) كما  في الجدول  TBL_Coursess على الترتيب
الحقول
حقل رقم المادة = CoursesID
حقل اسم المادة = CoursesName

1 =  التربية الإسلامية
2 =  اللغة العربية
3 =  الكتابة

4 = اللغة الأنجليزية

5 = الحاسوب

6 = الرياضيات

7 =  العلوم

8 = التاريخ

9 = الجغرافيا
بصراحة أعرف أن هناك خبراء حباهم الله بالخبرة والذكاء والفطنة لحل هذه المشكلة
انتظر رفع الملف 

تم تعديل بواسطه omran2015
طلب تعديل
قام بنشر
30 دقائق مضت, منتصر الانسي said:

بارك الله فيك أخي منتصر تعبتك معي

والمرافق جميل أيضا ويصلح للعرض الأفقي

ولكنه تعديل بسيط ويصبح من أجمل الاستعلامات وهو حقول الخمسة للنتائج الخاصة بمجموع الفصلين.

استعلام جميل

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   1 عضو متواجد الان

×
×
  • اضف...

Important Information