بسم الله الرحمن الرحيم ...
هنكمل النهاردة ان شاء الله الjoin ، كان بدأها المرة اللى فاتت الأخ J.DEV وكان شرح ال equijoin ،،،
المرة دى ،،، هنتكلم عن النوع الثانى اللى هو ال non equijoin،،،لكن قبل ما نبدأ ... نأخذ فكرة بسيطة
عن حاجتين هنستخدمهم ،،،
الأول : (ALIAS )، لكن الاسم ده معناه ايه ؟؟؟
ده معناه الاسم المستعار ، يعنى عايزين نعرض أى عمود باسم جديد ،
ولاحظ : اننا قلنا نعرض يعنى دة شئ مش أساسى ،،، بمعنى لايتغير اسم العمود فى الجداول الأصلية
المخزنة فى ال data base .
نوضح أكتر :
لو قلنا مثلا :
SQL كودSELECT ENAME , SAL , SAL*12
FROM EMP;
هيكون الناتج جدول عبارة عن ثلاثة حقول هى كالتالى : ( SAL , SAL*12 , ENAME , ) ،،،
لكن لو حبينا نعرض العمود SAL*12 باسم أحسن شوية ،،، يعنى نسميه مثلا ANNSAL يعنى الراتب السنوى ،،،
هننفذ دة بطريقة من اثنين :
1) نترك مسافة بين اسم العمود القديم والاسم الجديد ، يعنى كدة :
SQL كودSELECT ENAME , SAL , SAL*12 ANNSAL
FROM EMP ;
2) أونستخدم AS :
SQL كودSELECT ENAME , SAL , SAL*12 AS ANNSAL
FROM EMP ;
وفى الحالتين هتكون النتيجة كدة :
جدول به الحقول ( ENAME , SAL , ANNSAl )
لاحظ : لو الاسم المستعار مكون من كلمتين يجب وضعه بين double quotation يعنى كدة
SQL كودSELECT ENAME , SAL , SAL*12 "ANNSAL SALARY"
FROM EMP;
لاحظ : لأن ALIAS مش تغيير حقيقى لاسم العمود ... لا يمكن استخدامه فى فقرة where ،،،
*************************************************
2) أما الحاجة التانية : فهى استخدام BETWEEN ودى بنسميها علامة الحصر ، علشان بنستخدمها لحصر
النتائج ما بين قيمتين ،،،
وبتتكتب كدة ، القيمة الكبرى and القيمة الصغرى between
يعنى مثلا نقول :
SQL كودSELECT ENAME , SAL
FROM EMP WHERE SAL BETWEEN 2000 AND 4000 ;
************************************************** *********************
تابع .....
دى الوقت ممكن نتكلم عن موضوعنا النهاردة ،،، NON EQUIJOIN ،،،
كنا قبل كدة فى الربط المتساوى equijoin بنقول ان فى عمود مشترك بين الجدولين ، يعنى فى علاقة
مباشرة ،
علشان كدة كنا بنستخدم علامة التساوى فى فقرة where من الجملة select ،،،
لكن فى الربط غير المتساوى NON EQUIJOIN لا توجد علاقة مباشرة بين الجدولين ، لذلك لا نستخدم
علامة التساوى فى فقرة where من الجملة select ،،،
لو أخدنا المثال دة : لو عندنا جدولين :
الأول (EMP) الحقول ( ENAME , SAL )
الجدول الثاني ( SALGRADE)ول ( LOSAL , HISAL )
دى الوقت ممكن نفهم العلاقة غير المباشرة بين الجدولين ،
لأن أى قيمة لل SAL فى جدولEMP ازم هتكون قيمتها بين القيم الموجودة فى ال
LOSAL , HISAL) ( الموجودين فى جدول SALGARDE
يبقى لو عايزين نختار ال ENAME , SAL) ) من جدول EMP ، و (LOSAL , HISAL ) من جدول SALGRADE
نكتب الأمر كدة ::
SQL كودSELECT E.ENAME , E.SAL , S.GRADE
FROM EMP E , SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL ;
ملاحظة أخيرة :
استخدمنا alias
Eكاسم للجدول EMP، و S كاسم للجدول SALGARDE وتسهيل الأمر ،
وضعنا القيمة الصغرى
LOSAL
بعد between مباشرة ، ثم يليها and ، ثم القيمة الكبرى HISAL