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

ماهي طريقة البحث عن قيمة لكل رقم طلب بقاعدة البيانات ؟

بدأه tec4serv في 13 نوفمبر 2012 · 19 رد · 1,323 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني ،، اواجه صعوبه في ايجاد حل لسؤال التالي ...

لدي قاعدة بيانات ،، اسم الجدول RequestsHistory

بداخل هذا الجدول يوجد صفوف كثيره حوالي 4000 الاف صف

عبارة عن مثل الصورة المرفقه ....

بعض ارقام الطلبات لها حوالي صفين وبعضها 4 صفوف ... عبارة عن حالة الطلبات ....

انا ارغب ان ان اقوم بإظهار عدد الطلبات التي لم يتم تحويلها (مثل الصورة يوجد طلبين في خانة الحالة مكتوب ( طلب محول ) ...

post-263213-049393500 1352805820_thumb.p

لو قمت بطريقة التقليديه بالاستعلام راح يتكرر لان بعض الطلبات تحمل رقم طلب واحد REQ_ID ولها اكثر من حالة

يارب تكون واضحه لاني احتاج لها طريقة واكون شاكر لكم

المرفقات
Untitled.png
#2

يعني انت ترد أن يقوم البرنامج بعدم حساب الطلبات التي تحوي حالتي "مغلق" و "محول" أو "مسجل" و "محول"

تريد فقط الطلبات التي تظهر الطلبات التي تحوي "مسجل" أو "مغلق" فقط

صحيح؟؟

#3
عبد الملك بكار كتب:

يعني انت ترد أن يقوم البرنامج بعدم حساب الطلبات التي تحوي حالتي "مغلق" و "محول" أو "مسجل" و "محول"

تريد فقط الطلبات التي تظهر الطلبات التي تحوي "مسجل" أو "مغلق" فقط

صحيح؟؟

السلام عليكم اخي عبدالملك

انا اريد ان يظهر لي مجموع عدد الطلبات التي لا يوجد في احد حالاتها ( طلب محول ) ....

كما في الصورة يوجد 3 طلبات وهي ( 11 , 12 , 13 ) وكل طلب يمر في حالات مختلفه

ارغب ان يظهر لي العدد ( 1 ) كما في الصورة التي لا يوجد بها ( طلب محول ) ....

بنتظارك

#4

السلام عليكم أخي

ممكن ترفق المشروع (اذا ما كان في شي خاص) بعد أمرك مع قاعدة البيانات وتقللي مكان التعديل بالضبط :)

#5
عبد الملك بكار كتب:

السلام عليكم أخي

ممكن ترفق المشروع (اذا ما كان في شي خاص) بعد أمرك مع قاعدة البيانات وتقللي مكان التعديل بالضبط :)

عليكم السلام ،،،

المشكلة ان البرنامج خاص بالعمل وقاعدة البيانات على سيرفرات العمل

لايوجد حل اخر لديك :( والله الموضوع سهل عليكم :( متفائل فيك اخ عبدالملك

#6

السلام عليكم أخي

هاد الكود كتبته بسرعة صعي انه قد يكون بطيئ لكنه مفيد للغرض

int i = 0;
            OleDbConnection con = new OleDbConnection();
            OleDbCommand cmd1 = new OleDbCommand("Select * From [اسم الجدول] Where ([OrderStatusDiscription] = 'الطلب مغلق' Or [OrderStatusDiscription] = 'الطلب مسجل لدى مسؤول التوظيف')", con);
            con.Open();
            OleDbDataReader dr1 = cmd1.ExecuteReader();
            while (dr1.Read())
            {
                OleDbCommand cmd2 = new OleDbCommand("Select * [اسم الجدول] Where [OrderStatusDiscription] = 'الطلب محول' And [Req_ID] =" + dr1[0].ToString());
                OleDbDataReader dr2 = cmd2.ExecuteReader();
                if (dr2.HasRows == false)
                {
                    i++;
                }
            }
            con.Close();

ولكن هناك ملاحظة هامة الكود سيقوم بحساب جمييييييع السجلات التي لا تحوي الطلب محول يعني اذا كان للطلب 111 مثلا:

1- يحتاج الى...

2- مسجل...

3- معتمد....

فسيقوم بحساب 3

اذا لم يكن هذا طلبك فأعتقد أنه يمكنك ان تعدل على الكود حسب طلبك :)

واذا لم يكن طلبك فأخبرني لكن أريد أن أسالك هل جميع الطلبات لها ثلاث حالات فقط ؟؟؟

#7

جرب هذا الاستعلام

Select count(DISTINCT req_id) From RequestsHistory

الDISTINCT تقوم بتجاهل التكرار

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 14 نوفمبر 2012 في 00:12

#8

السلام عليكم ،، صباح الخير

لهذا انا قمت بكتابة الموضوع :( ،، انا ارغب اذا كان لطلب مثلاً 111 عبارة عن 3 حالات او 4 حالات ،، ولا تحتوي الحالات على ( طلب محول ) ارغب ان يظهر لي 1 اي رقم طلب واحد لكي انفذه على جميع الجدول :(

ايضاً قمت بتعديل على الكود ليتناسب مع البرنامج ولكن لا يعمل ويظهر لي الخطأ التالي

ExecuteReader: Connection property has not been initialized.

        int i = 0;
        SqlCommand myCommand1 = new SqlCommand("select * From RequestsHistory Where (OrderStatus = 'EFM14' Or OrderStatus = 'EFM16')", myConnection);
        myConnection.Open();
        SqlDataReader dr1 = myCommand1.ExecuteReader();
        while (dr1.Read())
        {
            SqlCommand myCommand2 = new SqlCommand("Select * From RequestsHistory Where OrderStatus = 'EFM15' And Req_ID =" + dr1[0].ToString());
            SqlDataReader dr2 = myCommand2.ExecuteReader();
            if (dr2.HasRows == false)
            {
                i++;
            }
        }
        myConnection.Close();

مع العلم ان الكود ( 'EFM14' و 'EFM16' ) تحتوي على جميع الحالات ،، ما عدى 'EFM15' فهي الحاله ( طلب محول ) ...

KARIMSOFT كتب:

جرب هذا الاستعلام

Select count(DISTINCT req_id) From RequestsHistory

الDISTINCT تقوم بتجاهل التكرار

الله يعطيك العافيه

الاستعلام اخ كريم سوف يظهر اول لسجل لكل رقم طلب ،، وانا لدي بعض الطلبات يوجد لها 3 و 4 سجلات :( لابد من حل اخر

تم تعديل هذه المشاركة بواسطة tec4serv في 14 نوفمبر 2012 في 08:54

#9

جرب هذا

Select count(DISTINCT req_id) 
From RequestsHistory
left OUTER join (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t
on RequestsHistory.req_id=t.req_id
where (t.req_id is null)

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 14 نوفمبر 2012 في 11:40

#10
KARIMSOFT كتب:

جرب هذا

Select count(DISTINCT req_id) 
From RequestsHistory
left OUTER join (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t
on RequestsHistory.req_id=t.req_id
where (t.req_id is null)

السلام عليكم

الله يعطيك العافيه

الكود تنفذ معي ، ولكن لتأكد انه يعمل بشكل الصحيح ،، ممكن تشرح له الكود ؟

#11
KARIMSOFT كتب:

جرب هذا

Select count(DISTINCT req_id) 
From RequestsHistory
left OUTER join (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t
on RequestsHistory.req_id=t.req_id
where (t.req_id is null)

السلام عليكم أخ كريم

ممكن تشرحلنا شو عمل هذا الكود لأني أنا كمان ما زلت أرى نفسي مبتدأ :) جزاك الله خيرا

#12

Select count(DISTINCT req_id)

From RequestsHistory

left OUTER join (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t

on RequestsHistory.req_id=t.req_id

where (t.req_id is null)

اولا DISTINCT تتجاهل تكرار السجلا المطتابقة

SELECT DISTINCT pCitizen.psCitizenFirstName, pCitizen.psCitizenMiddleName
FROM pCitizen;

ال count(DISTINCT req_id) تقوم بحساب العدد مع تجاهل التكرار مثل

1

3

2

1

2

1

يكون النانج 3 سجلات

ثانيا left OUTER join تقوم بجلب كل القيم علي يسار العلاقة حتي ولم يكن لها نظير في الجدول الاخر

انظر الصوره الرابط

وركز في اخر سجل في الناتج يوجد في احد الجداول ولا يوجد في الاخر ولكن يظهر ويظهر في الاخرnull

ثالثا (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t يقوم بحمل جدول وهمي به الناتج المطلوب استبعاد

رابع on RequestsHistory.req_id=t.req_id ربط العلاقة بين الجدول الاول والجدول الثاني الوهمي

خامسا where (t.req_id is null) عدم اظهار البيانات الخالية

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

#13
KARIMSOFT كتب:

Select count(DISTINCT req_id)

From RequestsHistory

left OUTER join (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t

on RequestsHistory.req_id=t.req_id

where (t.req_id is null)

اولا DISTINCT تتجاهل تكرار السجلا المطتابقة

SELECT DISTINCT pCitizen.psCitizenFirstName, pCitizen.psCitizenMiddleName
FROM pCitizen;

ال count(DISTINCT req_id) تقوم بحساب العدد مع تجاهل التكرار مثل

1

3

2

1

2

1

يكون النانج 3 سجلات

ثانيا left OUTER join تقوم بجلب كل القيم علي يسار العلاقة حتي ولم يكن لها نظير في الجدول الاخر

انظر الصوره الرابط

وركز في اخر سجل في الناتج يوجد في احد الجداول ولا يوجد في الاخر ولكن يظهر ويظهر في الاخرnull

ثالثا (Select req_id From RequestsHistory where OrderStatusDiscription =N'طلب محول') as t يقوم بحمل جدول وهمي به الناتج المطلوب استبعاد

رابع on RequestsHistory.req_id=t.req_id ربط العلاقة بين الجدول الاول والجدول الثاني الوهمي

خامسا where (t.req_id is null) عدم اظهار البيانات الخالية

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

جزاك الله الجنه قول آمين .....

بيض الله وجهك ....

عندي تعليق على DISTINCT ،، تقول انها تجلب اول صف في رقم الطلب وتتجاهل باقي ارقام الطلبات المشابهه في رقم الطلب ،، يعني لو كان الطلب 188 اول صف ( طلب مكتمل ) راح يتجاهل هالرقم مع انو في موجود في احدى الصفوف انه ( طلب محول ) ؟

انا ذكرت انه Req_ID قد يكون مكرر في الجدول ولكن الاختلاف في التكرار هو حالة الطلب ... يعني

188 طللب مكتمل

166 طلب مسجل

190 طلب معاد للمسؤول

188 طلب جديد

122 طلب محول

175 طلب مسجل

166 طلب مكتمل

122 طلب مكتمل

188 طلب محول

190 طلب مكتمل

122 طلب مسجل

175 طلب معاد للمسؤول

175 طلب مكتمل

هل معنى ذالك ان الطلب 188 و الطلب 122 راح يتم استبعادهم بجميع حالاتهم ؟ لانه يحتوي على ( طلب محول ) ... وتظهر نتيجة الإستعلام ( 3 ) <--- عدد الطلبات الغير محوله ....

آسف كثرت عليك الاساله ،، ولكن لرغبتي بأن تكون النتيجة صحيحه حتى لا ادخل في احراجات

تم تعديل هذه المشاركة بواسطة tec4serv في 15 نوفمبر 2012 في 04:24

#14

الDISTINCTتتجاهل تتطابق السجلات وتجلب سجلات مثل

SELECT DISTINCT pCitizen.psCitizenFirstName, pCitizen.psCitizenMiddleName
FROM pCitizen;

تقوم بمقارنة السجل كله

188 طللب مكتمل

188 طلب مسجل

188 طللب مكتمل

188 طللب مكتمل

122 طلب مسجل

يكون الناتج 3 سجل

اما count(DISTINCT req_id) تقارن req_id فقط وتتجاهل التكرار به وتجلب عدد مثل

188

188

188

188

122

يكون العدد 2

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 15 نوفمبر 2012 في 14:47

1
#15
KARIMSOFT كتب:

الDISTINCTتتجاهل تتطابق السجلات وتجلب سجلات مثل

SELECT DISTINCT pCitizen.psCitizenFirstName, pCitizen.psCitizenMiddleName
FROM pCitizen;

تقوم بمقارنة السجل كله

188 طللب مكتمل

188 طلب مسجل

188 طللب مكتمل

188 طللب مكتمل

122 طلب مسجل

يكون الناتج 3 سجل

اما count(DISTINCT req_id) تقارن req_id فقط وتتجاهل التكرار به وتجلب عدد مثل

188

188

188

188

122

يكون العدد 2

جزاك الله خير اخ كريم ،، اكون صريح معاك ، لم افهم اجابتك ،، الشرح واضح والاجابه واضحه ولكن اقصد لم افهم هي نفس طلبي او لا

#16

اتمني ان تجد من يساعدك اكثر مني

#17
KARIMSOFT كتب:

اتمني ان تجد من يساعدك اكثر مني

الله يعطيك العافيه ــ انت صاحب الفضل بعد الله اخ كريم

#18

الفضل لله فقط وكريم سبب فقط

اكرمك الله

#19

هل وصلت إلى حل ؟

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#20
أبو أحمد المبرمج كتب:

هل وصلت إلى حل ؟

 

السلام عليكم

 

استاذي القدير ابو احمد ،، نعم الاجابه موجوده في الرد رقم 9  ،، والاختلاف كان على شرح الكود والحمدلله وضحت الامور

 

بيض الله وجهك دائماً تحب الخير ،، الله يكتب ما تسعى إلية في موازين اعمالك

 

دمت بود

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

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

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

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

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