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

الاستعلام عن عدد السجلات من جدول بالنسبة لجدول اخر

بدأه N@b!L في 13 ديسمبر 2012 · 4 رد · 963 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد ان اظهر عدد السجلات في جدول بالنسبة لجدول اخر

الفكرة هي عدد السجلات المسجلة في السنة الحالية..

ها هي فكرة الكود الذي استخدمه ولن يفلح

SELECT Table1.*,Table2.*, COUNT(Table1.ID) AS Table2 FROM Table1 LEFT JOIN Table2 ON Table1.ID = Table2.ID WHERE Table2.years='" + DateTime.Now.ToString("yyyy") + "'GROUP BY Table1.*,Table2.*", con);

#2

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

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

لو كان كذلك

فأنت تحتاج لجملة استعلام داخلية مكان أحد الأعمدة

SELECT Table1.*, (select count(Table2.ID) from Table2 where  Table2.ID = Table1.ID) as Total from Table1

هكذا بإذن الله سيعرض لك كل سجلات الجدول Table1 وفى نهاية كل سجل يعرض عموداً اسمه Total يحتوى على عدد السجلات الفرعية من الجدول Table2 المرتبطة بهذا السجل، وفى حالة عدم وجود سجلات فرعية لأى سجل من جدول Table2 يعرض مكانه null، فإذا أردت استبدالها بصفر اكتب الجملة السابقة بالصيغة التالية

SELECT Table1.*, isnull ( (select count(Table2.ID) from Table2 where  Table2.ID = Table1.ID), 0) as Total from Table1

ملحوظة هامة:

الكود السابق يعتبر أن المفتاح الأساسى هو Table1.ID والمفتاح الفرعى هو Table2.ID ففى حالة اختلاف المسميات يرجى استخدام الأسماء الصحيحة للأعمدة

ملحوظة هامة على وظائف التجميع Aggregate functions مثل Sum, Count, Max, Min

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

مثال:

Select sum(Total) as All_Total from Orders group by OrderID

الجملة السابقة هى نفس الجملة Select Total as All_Total from Orders

تم تعديل هذه المشاركة بواسطة ema2000_t في 13 ديسمبر 2012 في 20:47

5

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

---------------

EmaSoft2000

-------------------

#3
اقتباس

ملحوظة هامة على وظائف التجميع Aggregate functions مثل Sum, Count, Max, Min

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

انا اعرف هذه المعلومة ولكن عندما كنت ابحث عن حلول للمشكلة رايت بان هذه الفكرة كان الحل ..

وشكرا اخر الكريم على التوضيح

ان شاء الله في ميزان حسناتك

بارك الله فيك و كل التوفيق

#4

اخي اريد عرض الناتج في تكست بوكس

تم تعديل هذه المشاركة بواسطة N@b!L في 13 ديسمبر 2012 في 21:29

#5

هذ الكود اسرع

SELECT Table1.*, isnull ( t.nCount, 0) as Total 
from Table1 Table1 LEFT JOIN 
(select id,count(Table2.ID) 
from Table2
group by id) as t 
ON Table1.ID = t.ID

لا يمكن ارجاع الناتجد في تكست بوكس لانه يحتوي علي اكثر من صف وعمود

1

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…