Skip to main content

الجزء ال13: الربط الذاتي Self-Join

الجزء ال13: الربط الذاتي Self-Join


لا يعتبر ال Self-join هو نوع جديد من الربط, فقط هو مفهوم, حيث يمكن ان يصنف بأن يكون من نوع الربط الداخلي Inner join او الربط الخارجي Outer join او من نوع Cross join , ولتوضيح ذلك لنأخذ مثال الجدول التالي الذي يصف اسماء المدراء والموظفين لديهم:


لاحظ في جدول البيانات اعلاه ان اسم المدير "صفاء" تكرر 3 مرات, "كريمة" 2 مرة, "شفيق" 1 مرة, لماذا التكرار؟ الحل هو بفصل الجدول وجعل جدول للمدراء واخر للموظفين كالأتي:



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

والأن اريد كتابة جمله الأستعلام التي ستنشأ الجدول اعلاه مع قيد الFK :
CREATE TABLE tblEmployees_Managers
(
[EmployeeID] INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(26) NOT NULL,
[ManagerID] INT CONSTRAINT ManagerID_FK REFERENCES
tblEmployees_Managers(EmployeeID)
)

وكتابة البيانات في الجدول كالأتي:

مثال: اريد استعادة اسماء المدراء مع موظفيهم؟
الحل:
SELECT E.Name AS [Employee Name],M.Name As [Manager Name]
FROM tblEmployees_Managers E
INNER JOIN tblEmployees_Managers M
ON   E.ManagerID= M.EmployeeID




لأحظ في المثال اعلاه اني استخدمت ربط من نوع الداخلي Inner join الذي سيسترجع القيم المشتركة فقط بين كل مدير وموظف, والربط يكون بنفس الجدول ولكن تسميه الأسم المستعار تجعله ظاهرياً يبدو كجدول ثاني كما ترى ان الحرف E اصبح يرمز للموظفين , وحرف M يرمز للمدراء, وفي فقرة الON , اعتبرت E وهو جدول للموظفين به حقل الFK وهو الManagerID يربط بجدول الM المدراء , والحقل الرئيسي في جدول المدراء M هو الEmployeeID بمثابة ID الذي هو نفسه الPK
واخيراً قمت بأسترجاع اسماء المدراء والموظفين في فقرة الSELECT لاحظ Name هو نفسه فقط الي يختلف هو الأسم المستعار للجدول E,M




Comments

Popular posts from this blog

PART #2: Registration and Login System Tutorial Using PHP and MYSQL

PART #2: Registration and Login System Tutorial Using PHP and MYSQL Registration and login system using PHP and MySQL database, in this part you will do the following: 1- Creating the registration page. 2- Validating the registration form. 3- Sending the activation link on successful registration. note: you can find the mailserver tool here: [MailServerTool] Good luck. PHP,Mysql,Programming,web development,How to,Technology,web programming,web project ideas,safaa al-hayali,saf3al2a,Registration and login,Registration and login in php,php and mysql login system,registration system using php and mysql,login and register php,login and register php with database,database,php tutorial,learn php,tutorial

How To Play .srt Subtitles File in Windows Media Player

How To Play .srt Subtitles File in Windows Media Player links: https://sourceforge.net/projects/wmpsub/ wmp,.srt Subtitles File in Windows Media Player,How To Play .srt Subtitles File in Windows Media Player,How To,Safaa Al-Hayali,saf3al2a,srt subtitle in WMP,Windows,Windows Media Player,media,.ass,local subtitles

Virtual Box : How to Increase Disk Size - Windows

How to increase disk size or disk storage in oracle virtual box the command you have to use: vboxmanage.exe modifymedium "[YourPathToVdiFileOfYourVirtualMachine]" --resize [NUMBER] virtual,box,vbox,oracle,partition,size,disk,increase,resize,windows,10,microsoft,vdi,vboxmanage,configuration,Safaa AL-Hayali,saf3al2a,Oracle,VirtualBox,How to,windows 10