الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أكثر من حقل مجموع ب group By

مغلق
بدأه hid في 8 يوليو 2007 · 6 رد · 591 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .

لو افترضت وجود جدول بالجنسيات .

وجدول آخر بحضورهم .

وأردت عمل استعلام يظهر لي :

الجنسية ------------ حاضر منهم ------------- غائب منهم

تونسي -------------------5 ---------------------- 3

إماراتي ------------------7 ---------------------- 0

سعودي-------------------0 ---------------------- 6

......................

مع ملاحظة أن جدول الحضور يحتوي على حقل يحدد الحضور والغياب يكتب فيه " حاضر " أو " غائب " .

فما هي طريقة الاستعلام برأيكم ؟!

هذة كانت محاولة . .


FROM jinsia.name_tr LEFT JOIN hodoor ON jinsia.no2_tr = num_jinsia.hodoor
GROUP BY jinsia.name_tr, jinsia.no2_tr, enter.hodoor
SELECT jinsia.name_tr As [الجنسية], Count(enter.hodoor) AS [موجود منهم],Count(enter.hodoor) AS [غائب منهم]

تم تعديل هذه المشاركة بواسطة hid في 8 يوليو 2007 في 09:36

#2

جرب مايلي :

select jinsia.name_tr, sum( iif(enter.hodoor ='حاضر',1,0))as [الحاضرين]  , sum( iif(enter.hodoor='حاضر',0,1))  as [الغائبين]
FROM jinsia.name_tr inner JOIN hodoor ON jinsia.no2_tr = num_jinsia.hodoor_sch
GROUP BY jinsia.name_tr
#3

عزيزي TareqVB لك كل شكري , وحلك جدا رائع .

غير أاني كنت أود عرض كل الجنسيات ثم فرز الحاضر والغائب .

ولمّا قمت بتعديل الربط إلى LEFT JOIN ظهرت مشكلة في احتساب الغائبين حيث أعطى القيم صفر , رقم واحد .

انظر للملف المرفق في الاستعلام الثاني .

حاولت جعل العداد على الجدول الثاني فلم تنفع .

...........

شكرا لك مرة أخرى , ولتعلم أني أكن لك كل إعجابي وتقديري .

db1.rar

تم تعديل هذه المشاركة بواسطة hid في 8 يوليو 2007 في 11:01

#4

تفضل اخي الكريم ملفك بعد التعديل ويفترض ان يكون بهذا الشكل

SELECT jinsia.name_tr, Sum(IIf(hodoor.enter='حاضر',1,0)) AS الحاضرين, Sum(IIf(hodoor.enter='حاضر',0,1)) AS الغائبين
FROM jinsia LEFT JOIN hodoor ON jinsia.id = hodoor.num_jinsia
GROUP BY jinsia.name_tr, jinsia.id;

Hid_up.rar

#5

شكرا لك أختي zahrah على ماقدمته , وقد أدى إلى نتيجة , لكن وقع خلل بسيط وهو كتابة الرقم 1 بدل القيمة صفر في حقل الغائبين والخاص بالجنسية التي لا يوجد بها سجلات في جدول "hodoor " .

قومي بتجربة حذف سجلات الجنسية المصرية مثلا من جدول الحضور , أي محتوى الحقل (hodoor.num_jinsia) والتي تحمل القيمة 4 التي تدل على الجنسية المصرية , وسوف تكون النتيجة .

الجنسية ------------ حاضر منهم ------------- غائب منهم

مصري -------------------0 ---------------------- 1

والصحيح هو

الجنسية ------------ حاضر منهم ------------- غائب منهم

تونسي -------------------0 ---------------------- 0

..................

مالحل ؟ , شاكرا ومقدرا صنيعكم .

#6

تم التعديل

SELECT jinsia.name_tr, Sum(IIf(hodoor.enter='حاضر',1,0)) AS الحاضرين, Sum(IIf([hodoor].[enter]='غائب',1,0)) AS الغائبين
FROM jinsia LEFT JOIN hodoor ON jinsia.id = hodoor.num_jinsia
GROUP BY jinsia.name_tr, jinsia.id;

Hid_up2.rar

#7

لا أدري حقيقة كيف استجمع قواي كلها , لأحاول أن أقول " شكرا لك أختي zahrah " بكل مالدي من طاقة .

لك كل تقديري وامتناني , وجزاك الله خيرا .

لك أيضا TareqVB الشكر والتقدير .

هذا الموضوع مغلق.

مواضيع مشابهة