delphi4arab منتديات دلفي للعرب
استفسار عن استعلام Sql - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : استفسار عن استعلام Sql (/showthread.php?tid=8400)



استفسار عن استعلام Sql - nacertaker - 16-02-2017

السلام  عليكم ورحمة الله تعالى وبركاته
أما بعد ، سبق لي وطرحت هذا السؤال ولكن لم يستطع أحد الإجابة، لعلي لم أستطع توصيل الفكرة فقررت إعادة صياغة السؤال لعلي أجد من يعينني
المطلوب: أريد عرض مجموعة من الإحصائيات من جدول تسجيلات التلاميذ [size=small] بحيث يعرض لي عدد المسجلين لكل دورة، عدد الذكور والإناث لكل دورة، وكذلك المسجلين والمتواجدين في القائمة الإحتياطية[/size].
الشرح:
[size=small]يوجد جدولين الأول : جدول التلاميذ eleve  يحتوي على الحقول التالية: كود Code_eleve (مفتاح رئيسي)و الجنس sex و كيفية التسجيل في القائمة Type_insc (مسجل أو إحتياطي)،[/size] code_tournoi وهو كود الدورة وهو عبارة عن مفتاح ثانوي من الجدول الرئيسي للدورة tournoi.
المشكل: 
المشكل يكمن في Group by فهي تصنف فقط العدد الكلي للتلاميذ في كل دورة أما عدد الذكور/الإناث، المسجلين/الإحتياطيين، فيضهر العدد الكلي وليس العدد الخاص بالدورة الموافقة.

[size=small]كيف يمكنني إصلاح الأمر؟ وبارك الله فيكم[/size]
كود :
select  COUNT(eleves.Code_tournoi), (select COUNT(*) from Eleves where sex='ذكر'), (select COUNT(*) from Eleves where sex='أنثى'), (select COUNT(*) from Eleves where type_insc='مسجل'), (select COUNT(*) from Eleves where type_insc='احتياط'), (select Tournoi.des_tournoi from Tournoi where Eleves.Code_tournoi=Tournoi.Code_tournoi) FROM        dbo.Eleves group by Eleves.Code_tournoi



RE: استفسار عن استعلام Sql - لؤي - 16-02-2017

السلام عليكم

هذا لأن عمل Group by تقوم بذلك إن نزعتها ماهو يعطيك الناتج ؟


RE: استفسار عن استعلام Sql - nacertaker - 16-02-2017

(16-02-2017, 12:46 PM)لؤي كتب : السلام عليكم

هذا لأن عمل  Group by تقوم بذلك إن نزعتها ماهو يعطيك الناتج ؟

لما أنزع Group by  لا يشتغل 
Msg 8120, Level 16, State 1, Line 6

Column 'dbo.Eleves.Code_tournoi' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


RE: استفسار عن استعلام Sql - لؤي - 16-02-2017

إذا كان هناك حقول مشتركة بين eleve و tournoi إستعمل الخاصية join


RE: استفسار عن استعلام Sql - nacertaker - 16-02-2017

(16-02-2017, 01:20 PM)لؤي كتب : إذا كان هناك حقول مشتركة بين eleve و tournoi إستعمل الخاصية join

شكر الأخ لؤي .. لكن لما أنزع Group by يصبح الإستعلام يعرض العدد الكلي للمسجلين والذكور والإناث ...
ولكني أريد أن يعرض القيم مفصلة بكل دورة ،ى يعني:
عدد الدكور في كل دورة
عدد الإناث في كل دورة
عدد المسجلين في كل دورة
عدد الإحتياطيين في كل دورة
الكل في جدول واحد


RE: استفسار عن استعلام Sql - لؤي - 16-02-2017

تحافظ على نفس النتيجة بطريقة مختلفة جربها ممكن تعطيك مبتغاك


RE: استفسار عن استعلام Sql - Mr.DOS - 17-02-2017

سلام عليكم
اعد النضر في تصميم الجداول او بالاحرى قم بإضافة جدول احداث جديد
لان الشيئ الذي تريد الوصول اليه خرج عن Joins و MasterDetail
وكأنك تريد عمل فرز لناتج مفلتر ثم اعادة فلترته من جديد .