شرح MySQL Join في Node.js
تعتبر MySQL واحدة من أشهر قواعد البيانات العلائقية المستخدمة على نطاق واسع، وتوفر مجموعة متنوعة من العمليات التي تسهل التعامل مع البيانات بفعالية. واحدة من هذه العمليات هي “Join”، والتي تسمح للمطورين بدمج البيانات من جداول متعددة في استعلام واحد. في بيئة Node.js، يمكن تحقيق ذلك باستخدام مكتبة مثل “mysql” أو “mysql2” للتواصل مع قاعدة البيانات وتنفيذ [شركة برمجة مصرية] استعلامات “Join”.
أنواع MySQL Join
هناك عدة أنواع من عمليات “Join” في MySQL، كل منها يخدم غرضًا مختلفًا عند التعامل [شركة برمجة مصرية] مع البيانات. الأنواع الرئيسية تشمل:
- INNER JOIN: يقوم بجلب السجلات التي لها تطابق في كلا الجدولين.
- LEFT JOIN: يجلب كافة السجلات من الجدول الأيسر، ويضيف السجلات المتطابقة من الجدول الأيمن.
- RIGHT JOIN: يعمل بالعكس من LEFT JOIN، حيث يجلب كافة السجلات من الجدول الأيمن ويضيف المتطابق منها من الجدول الأيسر.
- FULL JOIN: يجمع بين LEFT JOIN و RIGHT JOIN، ليشمل كافة السجلات من كلا الجدولين.
تنفيذ MySQL Join في Node.js
يمكنك تنفيذ “Join” في Node.js باستخدام مكتبة “mysql2”. إليك مثال لكيفية تنفيذ “INNER JOIN” لجلب البيانات من جدولين، “employees” و “departments”:
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'company'
});
connection.connect();
const query = `
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
`;
connection.query(query, (error, results) => {
if (error) {
return console.error('Error executing query: ', error);
}
console.log('Result: ', results);
});
connection.end();
في هذا المثال، نقوم بإنشاء اتصال بقاعدة البيانات وتنفيذ استعلام “INNER JOIN” لجلب أسماء الموظفين وأسماء الأقسام التي ينتمون إليها. سيتم جلب فقط السجلات التي لها تطابق في كلا الجدولين.
أمثلة إضافية على عمليات Join
يمكنك استخدام أنواع أخرى من “Join” بناءً على متطلباتك. على سبيل المثال، لتنفيذ “LEFT JOIN” يمكن تعديل الاستعلام كما يلي:
const query = `
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
`;
هذا الاستعلام سيجلب كافة الموظفين، حتى إذا لم يكن لديهم قسم مرتبط في جدول “departments”. السجلات التي لا تحتوي على تطابق سيتم ملء قيمها بقيمة null في النتائج.
