EasyDelphi Q&A
+2 تصويتات
66 مشاهدات

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

SELECT A.Nbr_Groupe AS Nbr_Groupe1, B.Nbr_Groupe AS Nbr_Groupe2, A.Cod_Spc
FROM Contenant A, Contenant B
WHERE A.Nbr_Groupe = B.Nbr_Groupe
AND A.Cod_Spc = B.Cod_Spc 
ORDER BY A.Cod_Spc;

أرجو التصحيح 
ملاحضة اسم الحقل 1 Nbr_Groupe و اسم الحقل الثاني Cod_Spc

اسم الجدول Contenant

صورة بعد تنفيذ الكود أعلاه

 
سُئل في تصنيف SQL Server بواسطة (1,690 نقاط) | 66 مشاهدات
0
سؤالك غير واضح ابدا.
0
أحاول اظهار  القيم التي من الحقل الواحد (تخصصات) مع كل ما يقابلها من الحقل الثاني (أفواج)
0
ايضا غير مفهوم.
ضع جزء من الجدول . حتى نعرف شكله الاساسي . وارسم الشكل المطلوب النهائي . حتى نعرف ما الذي تحاول الوصول له

1 إجابة واحدة

+1 تصويت
  •  أولا : الجدول "Contenant" فيما يخص المفتاح أراه  ليس لديه مفتاح ؟ و من جهة أخرى إن كان الحقل "Nbr_Groupe" هو المفتاح لهذا الجدول فهذا غير منطقي ؟؟؟ ذلك أنه قابل للتكرار أكثر من مرة ....؟؟؟ و بالمقابل هذا الجدول الذي إسمه   "Contenant" (و الذي ترجمته بالعربية الفعل "يحتوي") فمن غير المنطقي أن يكون مفتاحه الحقل "Nbr_Groupe"   و الذي يعني كود_الفوج  ؟؟؟؟
  •  ثانيا : يبدو لي أن هذا الجدول  "Contenant" هو عبارة عن جدول إبن أو جدول ناتج عن العلاقة فيما بين الجدولين "Groupe" و "Specialite"  مع أن هذه مجرد فكرة و لكن في الواقع تبدو غير منطقية لأنها علاقة متعددة من جهة و احدة فقط بمعنى ليست علاقة "Many to Many" أي قد نجد تخصص واحد يحتوي على أكثر من فوج و لكن ليس العكس أي أنه لا يمكننا أن نجد فوجا واحدا ينتمي لأكثر من تخصص ؟؟؟ فلماذا نصنع أصلا هذا الجدول "Contenant" ؟؟؟
  •  ثالثا : لنفرض مثلا أننا تجاهلنا قانون تسيير قواعد البيانات "SGBD" و قمنا بالتعديل على مستوى هذا الجدول و أضفنا له الحقل مفتاح و ليكن مثلا "Code_Contenant" و حاولنا أن نبحث عن مجموعة الأفواج التي تنتمي لكل تخصص فهذا سهل جدا و لا يتطلب مطلقا كل هذا التعقيد الذي أنت فيه الأن ....
  with ADOQuery_Contenant do
  begin
    SQL.Clear;
    SQL.Add('select * from TContenant where Code_Spec = :PSpec_LookUpByCode order by Code_Spec');
    // ADOQuery_Contenant هو عبارة عن برامتر للمكون  :PSpec_LookUpByCode للإشارة فإن 
    // TComboBox و قد نملؤها مثلا من المكون 
    Parameters.ParamByName('PSpec_LookUpByCode').Value := ADOTable_Spec.Lookup('Nom_Spec', CmboBox_Spec_List.Text, 'Code_Spec');
    Open;
  end;
  •  رابعا :  الأستعلام "Self Join" على حسب علمي لا يطبق سوى على جدول واحد و إسم  هذا الأستعلام فقط يدل على مدلوله ... و أنت هنا لا أفهم ماذا تريد لديك ثلاث جداول و تعقد في الأمور أكثر فأكثر .... و كما لاحظت أن كل أسئلتك المتعلقة فقط بقواعد البيانات فيها نوع من التعقيد ... و ذلك ليس لرغبتك في ذلك .. و لكن ينقصك فقط التفكير المنطقي و البساطة في فهم هذا الجزء من البرمجة ... 
و في الأخير أتمنى لك حظا طيبا ..
تم الرد عليه بواسطة (19,960 نقاط)
0
ربي يحفضك أخي الكريم
كنت محقا في  كثير مما قلت   و الشكر الجزيل لك لكن يبدو اني لم أكن واضحا لذلك سأعيد طرح السؤال بصيغة اخرى لاحقا
كل الشكر لكم

اسئلة متعلقة

+3 تصويتات
2 إجابة
سُئل أغسطس 24، 2018 في تصنيف Delphi بواسطة Yamada Fakir (1,690 نقاط) | 78 مشاهدات
0 تصويتات
2 إجابة
سُئل سبتمبر 11، 2018 في تصنيف vcl بواسطة Yamada Fakir (1,690 نقاط) | 88 مشاهدات
0 تصويتات
0 إجابة
سُئل سبتمبر 1 في تصنيف SQL Server بواسطة حاتم (120 نقاط) | 23 مشاهدات
0 تصويتات
1 إجابة
0 تصويتات
1 إجابة
سُئل منذ 6 أيام في تصنيف Delphi بواسطة Amar Gozim (11,030 نقاط) | 18 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

441 سؤال
675 إجابة
1,216 تعليق
258 مستخدم