![]() |
أضيف في: 6-12-1426هـ | |||
---|---|---|---|---|
الجزء الرابع من استخدام جمل Sql مع الفيجوال بيسك جملة التجميع Group By تستخدم لتجميع النتائج الى مجموعات حسب حقل من الحقول حيث يمكنك مثلا ايجاد المجموعات الفرعية لعدة اقسام باستخدام جملة Group By الصورة العامة للجملة تكتب كالتالي : CODE Select * from tab Where condition Group By col Order by col1,col2,…[Asc,Desc] مثال تطبيقي 18 مثلا إذا كان عندنا رواتب الموظفين للشركة والتي بها مجموعة أقسام ونريد ايجاد مجموع الرواتب لكل قسم من الأقسام افترض عندنا ثلاث أقسام قسم الحسابات Account – قسم التدريب Training وقسم المبيعات Sales اضغط على الزر SQL18 مرتين ثم اكتب الجملة التالية CODE Dim sql sql = "select dep,sum(salary) as the_sum,avg(salary) as the_averag,count(salary) as the_aacount from emp group by dep " If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 جملة تقليص التجميع Having تستخدم لتقليص المجموعات مثل إيجاد أكبر مجموع من المثال السابق الصورة العامة للجملة تكتب كالتالي : CODE Select * from tab Where condition Group By col Having col Order by col1,col2,…[Asc,Desc] نعطي مثال تطبيقي سريع مثلا إذا كان عندنا رواتب الموظفين للشركة والتي بها مجموعة أقسام ونريد ايجاد المجموعات الأكبر من 12000 مثال تطبيقي 19 اضغط على الزر SQL19 مرتين ثم اكتب الجملة التالية CODE Dim sql sql = "select dep,sum(salary) as the_sum,avg(salary) as the_averag,count(salary) as the_aacount from emp group by dep having sum(salary)>12000 and avg(salary)>3000 " If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 ربط الجداول وهي ميزة هامة جدا من مميزات قاعدة البيانات أنك يمكنك عرض بيانات من اكثر من جدول ولكن أولا يجب أن يكون بين الجداول علاقة ربط معينة حتى يمكنك استخراج المعلومات من هذه الجداول ولمن لا يعرف عن العلاقات هو يجب وجود حقل رقمي مكرر في الجدولين يطلق على الحقل في الجدول الأول المفتاح الأساسي ويطلق عليه في الجدول الثاني المفتاح الأجنبي حيث يتم الشرط من خلال تساوي قيم هذين الحقلين جمل الوصل 1 – الوصل باستخدام جملة Where 2 – الوصل باستخدام جملة Join أولا : الوصل باستخدام جملة Where حيث تكتب جملة الربط كالتالي CODE Select tab1.col1, tab2.col2 From tab1,tab2 Where tab1.col = tab2.col ونعطي مثلا عمليا حيث نعتبر الجدولين st_info والجدول st_level الجدول الأول به الحقول st_no,st_name,address,phone,b_date, والجدول الثاني به الحقول التالية st_no,level,class مثلا مثال تطبيقي 20 إذا أردنا مثلا عرض رقم الطالب والمستوى والفصل من الجدولين بحيث أن رقم الطالب متساوي اضغط على الزر SQL20 واكتب الكود التالي CODE Dim sql sql = "select st_inf.st_no,st_level.level,st_level.class from st_inf,st_level where st_inf.st_no = st_level.st_no and st_inf.st_no>8 " If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 ثانيا : الوصل باستخدام الجملة Join وهي تأتي على عدة أشكال الشكل الأول : جملة Inner join وهي الوضع الافتراضي إن لم تحدد نوع الصلة وتسمى صلة داخلية حيث تعيد جميع السجلات المتطابقة من الجدولين وتهمل السجلات الغير متطابقة وهي تكتب كالتالي : CODE Select tab1.col1, tab2.col2 From tab1 Inner join tab2 on tab1.col = tab2.col Where condition Order by col,… Group by col ,…. مثال تطبيقي 21 اضغط على الزر SQL21 مرتين فمثلا إذا أردنا مثلا عرض رقم الطالب والمستوى والفصل من الجدولين بحيث أن رقم الطالب متساوي CODE Dim sql sql = "select st_inf.st_no,st_level.level,st_level.class from st_inf inner join st_level on st_inf.st_no = st_level.st_no" If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 الشكل الثاني : جملة left join تسمى صلة يسارية ( ليست شيوعية ) ولكن من اليسار حيث تعيد جميع السجلات للجدول اليساري ( الثانوي ) والمطابقة لها من الجدول اليميني ( الأساسي ) وهي تكتب كالتالي : CODE Select tab1.col1, tab2.col2 From tab1 Left join tab2 on tab1.col = tab2.col Where condition Order by col,… Group by col ,…. مثال تطبيقي 22 اضغط على الزر SQL22 مرتين فمثلا إذا أردنا مثلا عرض رقم الطالب والمستوى والفصل من الجدولين بحيث أن رقم الطالب متساوي بحيث يعرض كل سجلات الثاني والمتساوي من الأول CODE Dim sql sql = "select st_inf.st_no,st_level.level,st_level.class from st_inf Left join st_level on st_inf.st_no = st_level.st_no where st_inf.st_no>10" If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 الشكل الثالث : جملة right join تسمى صلة يمينية ولكن من اليمين حيث تعيد جميع السجلات للجدول اليميني ( الأساسي ) والمطابقة لها من الجدول اليساري ( الثانوي) وهي تكتب كالتالي : CODE Select tab1.col1, tab2.col2 From tab1 Right join tab2 on tab1.col = tab2.col Where condition Order by col,… Group by col ,…. مثال تطبيقي 23 اضغط على الزر SQL23 مرتين فمثلا إذا أردنا مثلا عرض رقم الطالب والمستوى والفصل من الجدولين بحيث أن رقم الطالب متساوي بحيث يعرض كل سجلات الأول مع المتساوي فقط من الثاني CODE Dim sql sql = "select st_inf.st_no,st_level.level,st_level.class from st_inf Right join st_level on st_inf.st_no = st_level.st_no where st_inf.st_no>10" If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 الشكل الرابع : جملة Full join تسمى صلة كاملة حيث تعيد جميع السجلات من الجدولين وهي تكتب كالتالي : CODE Select tab1.col1, tab2.col2 From tab1 full join tab2 on tab1.col = tab2.col Where condition Order by col,… Group by col ,…. مثال تطبيقي 24 اضغط على الزر SQL24 مرتين فمثلا إذا أردنا مثلا عرض رقم الطالب والمستوى والفصل من الجدولين بحيث أن رقم الطالب متساوي CODE Dim sql sql = "select st_inf.st_no,st_level.level,st_level.class from st_inf full join st_level on st_inf.st_no = st_level.st_no where st_inf.st_no>10" If rs1.State = adStateOpen Then rs1.Close rs1.Open sql, db, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs1 بهذا نكون قد انهيا أهم جمل SQL المستخدمة مع الفيجوال بيسك والى لقاء مع الجزء الأخير من هذه السلسلة وهو Data report |
||||
الكاتب: LaSer_26 |
![]() |
![]() |
![]() ![]() ![]() ![]() ![]() |
|
خيارات الدرس : ![]() ![]() ![]() |