شرح برامج » لغات البرمجة »  الدرس الثاني عشر انشأ برنامجك بالفيجوال بيسك

  الدرس الثاني عشر انشأ برنامجك بالفيجوال بيسك  أضيف في: 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 انقر هنا لمراسلة LaSer_26 أنقر هنا للإنتقال إلى موقع LaSer_26 إضافة للمفضلة إضافة لمفضلة Google إضافة لمفضلة Delicious إضافة لمفضلة Digg إضافة لمفضلة Facebook
 



 

المنتديات

الأذكار

ألعاب الأدعية الصحيحة
راديو وصفات طبخ
مواقع تسوق مكتبة القصص