0 Khaled Osama3 نشر 27 أكتوبر أرسل تقرير نشر 27 أكتوبر بتاريخ 1 دقيقة مضت قال Ail Ahmed: السلام عليكم اي هي JOIN في استعلامات SQL ؟ و عليكم السلام ال JOIN: هي عملية تستخدم لربط الجداول مع بعضها البعض بناءً على علاقة مشتركة. و غالبًا ما تُستخدم عندما يكون لديك بيانات موزعة في جداول متعددة وترغب في جلبها معًا في استعلام واحد لتقديم نتائج مفيدة. و هناك عدة انواع له: INNER JOIN: يتم إرجاع السجلات التي لها قيم مطابقة في كلا الجدولين فقط. إذا لم يكن هناك تطابق، فلن يتم عرض السجل في النتيجة. LEFT JOIN (LEFT OUTER JOIN): يتم إرجاع جميع السجلات من الجدول الأيسر (Left Table)، مع السجلات المطابقة من الجدول الأيمن (Right Table). إذا لم يكن هناك تطابق، فستحتوي الأعمدة من الجدول الأيمن على قيمة NULL. RIGHT JOIN (RIGHT OUTER JOIN): يعمل بشكل مشابه لـ LEFT JOIN، لكن يتم إرجاع جميع السجلات من الجدول الأيمن، مع السجلات المطابقة من الجدول الأيسر. إذا لم يكن هناك تطابق، ستكون القيم من الجدول الأيسر هي NULL. FULL JOIN (FULL OUTER JOIN): يجمع نتائج كل من LEFT JOIN و RIGHT JOIN، حيث يتم إرجاع جميع السجلات من كلا الجدولين. إذا لم يكن هناك تطابق، فسيتم ملء القيم غير الموجودة بـ NULL. 1 اقتباس
0 Mustafa Suleiman نشر 27 أكتوبر أرسل تقرير نشر 27 أكتوبر دمج البيانات مثل ربط قطع البازل، أي لدينا مجموعة من قطع البازل، كل قطعة تمثل جدولًا في قاعدة البيانات، لكي تُكمل الصورة الكاملة، تحتاج إلى ربط هذه القطع معًا. هنا يأتي دور JOIN في SQL. أي JOIN هي عبارة SQL تُستخدم لدمج البيانات من جداول متعددة بناءًا على علاقة مشتركة بينها، مثل ربط قطع البازل معًا لإنشاء صورة كاملة. ويوجد أنواع لـ JOIN، أولها INNER JOIN مثل ربط قطعتين من البازل تتناسبان تمامًا معًا، ويعرض فقط الصفوف التي تتطابق قيمها في مفتاح الربط في كلا الجدولين. مثل جدول الطلاب يحتوي على معلومات عن الطلاب (اسم الطالب، رقم الطالب). جدول الدرجات يحتوي على معلومات عن درجات الطلاب (رقم الطالب، اسم المادة، الدرجة). SELECT Students.Name, Grades.Subject, Grades.Grade FROM Students INNER JOIN Grades ON Students.StudentID = Grades.StudentID; سيُظهر الاستعلام أسماء الطلاب والمواد التي درسها كل طالب والدرجات التي حصل عليها. النوع الثاني هو LEFT JOIN مثل ربط قطعة من البازل مع قطعة أخرى وقد تكون هناك فراغات Null، ويعرض جميع صفوف الجدول الأيسر، مع إمكانية عرض البيانات المتوافقة من الجدول الأيمن. مثل جدول الطلاب يحتوي على معلومات عن الطلاب (اسم الطالب، رقم الطالب). وجدول الأنشطة يحتوي على معلومات عن الأنشطة التي يشارك فيها الطلاب (رقم الطالب، اسم النشاط). SELECT Students.Name, Activities.ActivityName FROM Students LEFT JOIN Activities ON Students.StudentID = Activities.StudentID; النتيجة هي أسماء جميع الطلاب، مع عرض أسماء الأنشطة التي يشارك فيها كل طالب إن وجدت، وإن لم يشارك طالب في أي أنشطة، ستُظهر قيمًا فارغة (NULL) في عمود "اسم النشاط". النوع الثالث هو RIGHT JOIN مثل ربط قطعة من البازل مع قطعة أخرى وقد تكون هناك فراغات Null، ويعرض جميع صفوف الجدول الأيمن، مع إمكانية عرض البيانات المتوافقة من الجدول الأيسر. مثل جدول الأنشطة يحتوي على معلومات عن الأنشطة التي يشارك فيها الطلاب (رقم الطالب، اسم النشاط). وجدول الطلاب يحتوي على معلومات عن الطلاب (اسم الطالب، رقم الطالب). SELECT Activities.ActivityName, Students.Name FROM Activities RIGHT JOIN Students ON Activities.StudentID = Students.StudentID; نتيجة الاستعلام هي أسماء جميع الأنشطة، مع عرض أسماء الطلاب الذين يشاركون فيها إن وجدت، وفي حال لم يكن هناك طالب مرتبط بنشاط معين، ستُظهر قيمًا فارغة (NULL) في عمود "اسم الطالب". النوع الأخير هو FULL JOIN مثل ربط جميع قطع البازل معًا، بغض النظر عن وجود فراغات، ويعرض جميع صفوف كلا الجدولين، سواء كانت متوافقة أم لا. مثل جدول الطلاب يحتوي على معلومات عن الطلاب (اسم الطالب، رقم الطالب). وجدول المعلمين يحتوي على معلومات عن المعلمين (اسم المعلم، رقم المعلم). SELECT Activities.ActivityName, Students.Name FROM Activities RIGHT JOIN Students ON Activities.StudentID = Students.StudentID; ستحصل على أسماء جميع الطلاب والمعلمين، مع عرض البيانات المتوافقة بينهما، وإن لم يكن هناك تطابق، ستُظهر قيمًا فارغة (NULL) في الأعمدة من الجدول الآخر. 1 اقتباس
0 ياسر مسكين نشر 27 أكتوبر أرسل تقرير نشر 27 أكتوبر لنفترض أن لدينا جدولين جدول للموظفين وآخر للأقسام كالتالي: جدول الموظفين: لعرض معلومات كل موظف. CREATE TABLE Employees ( EmpID int, EmpName varchar(50), DeptID int ); جدول الأقسام: لعرض الموظفين وأقسامهم. SELECT Employees.EmpName, Departments.DeptName FROM Employees INNER JOIN Departments ON Employees.DeptID = Departments.DeptID; JOIN هو أمر في SQL يستخدم لربط جدولين أو أكثر معا بناء على عمود مشترك بينهم فمثلا INNER JOIN يأخذ فقط البيانات المشتركة بين الجدولين مثلا عندما نريد معرفة الموظفين الذين لديهم أقسام فقط بينما LEFT JOIN يأخذ كل البيانات من الجدول الأيسر + البيانات المتطابقة من الجدول الأيمن مثلا عندما نريد معرفة كل الموظفين حتى لو لم يكن لديهم قسم. لاحظ RIGHT JOIN فهو يأخذ كل البيانات من الجدول الأيمن + البيانات المتطابقة من الجدول الأيسر ونستعمله عندما نريد معرفة كل الأقسام حتى لو لم يكن فيها موظفين بينما FULL JOIN فهو يأخذ كل البيانات من كلا الجدولين إضافة أنه يظهر NULL للقيم غير المتطابقة. وهذا مثال لكود كيفية استعمال كل نوع كما شرحنا الآن لنبدأ ب INNER JOIN: SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id; LEFT JOIN أو (LEFT OUTER JOIN): SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id; RIGHT JOIN أو (RIGHT OUTER JOIN): SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.id = Table2.id; FULL JOIN أو (FULL OUTER JOIN): SELECT * FROM Table1 FULL OUTER JOIN Table2 ON Table1.id = Table2.id; ال CROSS JOIN: وهو يقوم بعمل ضرب ديكارتي (Cartesian product) بين الجدولين فيربط كل صف في الجدول الأول مع كل صف في الجدول الثاني كالتالي: SELECT * FROM Table1 CROSS JOIN Table2; أي أننا يمكننا استخدام كل من: INNER JOIN عندما نريد فقط البيانات المتطابقة LEFT JOIN عندما نريد جميع البيانات من الجدول الأول حتى لو لم يكن لها تطابق RIGHT JOIN عندما نريد جميع البيانات من الجدول الثاني FULL JOIN للحصول على جميع البيانات من كلا الجدولين لكن يجب أن نتجنب استخدام CROSS JOIN إلا في حالات خاصة لأنه ينتج عددا كبيرا من السجلات. 1 اقتباس
السؤال
Ail Ahmed
السلام عليكم
اي هي JOIN في استعلامات SQL ؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.