Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

SQLدمج الأعمدة التي تم جلبها من قاعدة البيانات

  • مفهوم دمج الأعمدة التي تم جلبها من قاعدة البيانات
  • أمثلة بسيطة على دمج القيم الرقمية و النصية
  • تجهيز قاعدة البيانات التي سنطبق عليها
  • جلب البيانات من الجدول مع دمجها و عرضها بشكل أجمل

مفهوم دمج الأعمدة التي تم جلبها من قاعدة البيانات

عند إدخال المعلومات في قاعدة البيانات فإننا نفصلها عن بعضها بشكل منظم و بأبسط صورة ممكنة لتسهيل التعامل معها لاحقاً سواء عند البحث عنها، تعديلها، أو حتى عرضها. فعلى سبيل المثال إذا أردنا تخزين إسم المستخدم الكامل فإننا نضع إسمه في حقل و إسم عائلته في حقل.

تنظيم المعلومات بهذا الشكل يجعل التعامل معها سهل و مرن للغاية لأنك تستطيع البحث و فلترة البحث بدون أي عناء بالإضافة إلى أنك تستطيع أن تعيد دمج هذه المعلومات و عرضها كيفما شئت كما ستتعلم في هذا الدرس.

الدمج ( Concatenation ) معناه إضافة قيمة في نهاية قيمة أخرى حتى يظهرا كنص واحد.


طريقة دمج الأعمدة

طريقة دمج قيم الجداول تختلف من قاعدة بيانات لأخرى كما يلي:

  • في قواعد بيانات MySQL نستخدم الدالة CONCAT().
  • في قواعد بيانات Oracle و SQLite نضع الرمز || بين الأعمدة.
  • في قواعد بيانات SQL Server يمكننا استخدام الدالة CONCAT() أو ضع الرمز || بين الأعمدة.

في هذه الدورة سنعتمد الدمج بأسلوب قواعد بيانات MySQL.

إذا كنت تتعامل مع قيم عددية و وضعت بينها رمز الجمع + أو الطرح - أو الضرب * أو القسمة / فإنك ستحصل على ناتجهم.

أمثلة بسيطة على دمج القيم الرقمية و النصية

الأمثلة التالية تتنفذ بشكل مباشر، أي لا تحتاج أن تحدد أي قاعدة بيانات قبلها.


في المثال التالي قمنا باستخدام الأمر SELECT بشكل يجلب لنا ناتج جمع ثلاث أعداد.
ملاحظة: النتيجة ستكون عبارة عن جدول لأن الأمر SELECT دائماً يرجع النتيجة كجدول.

المثال الأول

SELECT 5 + 2 + 7;
SELECT 5 + 2 + 7;

النتيجة

5 + 2 + 7
14

في المثال التالي قمنا باستخدام الأمر SELECT بشكل يجلب لنا ناتج جمع ثلاث أعداد مع وضع إسم للعمود الذي ستظهر فيه النتيجة.

المثال الثاني

SELECT 5 + 2 + 7 AS 'Total';
SELECT 5 + 2 + 7 AS 'Total';

النتيجة

Total
14

في المثال التالي حاولنا دمج كلمتين عند استخدام الأمر SELECT حتى يظهروا كنص واحد.
ملاحظة: هنا لن يظهر خطأ في الإستعلام و لكننا سنحصل على نتيجة خاطئة، لأننا لم ندمج النصوص بواسطة الدالة CONCAT().

المثال الثالث

SELECT 'Mhamad' + 'Harmush';
SELECT 'Mhamad' + 'Harmush';

النتيجة

'Mhamad' + 'Harmush'
0

نلاحظ أنه حاول جمعها كما يجمع الأعداد العادية و بما أنه لم يستطع جمعهما وضع صفر كناتج الجمع.


في المثال التالي قمنا باستخدام الدالة CONCAT() لدمج كلمتين عند استخدام الأمر SELECT حتى يظهروا كنص واحد كما أننا قمنا بوضع إسم للعمود.

المثال الرابع

SELECT CONCAT('Mhamad', 'Harmush') AS 'Full Name';
SELECT CONCAT('Mhamad', 'Harmush') AS 'Full Name';

النتيجة

Full Name
MhamadHarmush

نلاحظ أنه تم عرض الكلمتين كنص واحد و لكنهما يظهران بشكل متلاصق.


في المثال التالي أعدنا كتابة الإستعلام السابق مع وضع نص يتألف من مسافة فارغة بين الكلمتين اللتين سندمجهما في نص واحد لأننا نريد عرض الكلمة الأولى, ثم عرض مسافة فارغة, ثم عرض الكلمة الثانية.

المثال الخامس

SELECT CONCAT('Mhamad', ' ' ,'Harmush') AS 'Full Name';
SELECT CONCAT('Mhamad', ' ' ,'Harmush') AS 'Full Name';

النتيجة

Full Name
Mhamad Harmush

نلاحظ أنه تم عرض الكلمتين كنص واحد و و تم وضع المسافة الفارغة التي أضفناها بينهما كما أردنا.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

مثال

-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
DROP DATABASE IF EXISTS harmash;
-- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
CREATE DATABASE harmash;
-- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
USE harmash;
-- يتألف من أربعة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
-- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
CREATE TABLE employees (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
salary DECIMAL(7,2)
);
-- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
-- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
-- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
-- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", 800);
INSERT INTO employees VALUES (null, "Rami", "Algharib", 750);
INSERT INTO employees VALUES (null, "Said", "Alnaja", 900);
INSERT INTO employees VALUES (null, "Noura", "Jamali", 845);
INSERT INTO employees VALUES (null, "Amani", "Sarrouf", 1000);
INSERT INTO employees VALUES (null, "Mhamad", "Harmush", 700);
INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", 850);
INSERT INTO employees VALUES (null, "Mostafa", "Shawki", 920);
INSERT INTO employees VALUES (null, "Jana", "Alkassem", 780);
INSERT INTO employees VALUES (null, "Houssam", "Zahrani", 880);
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها DROP DATABASE IF EXISTS harmash; -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها CREATE DATABASE harmash; -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات USE harmash; -- يتألف من أربعة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات CREATE TABLE employees ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50), last_name VARCHAR(50), salary DECIMAL(7,2) ); -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", 800); INSERT INTO employees VALUES (null, "Rami", "Algharib", 750); INSERT INTO employees VALUES (null, "Said", "Alnaja", 900); INSERT INTO employees VALUES (null, "Noura", "Jamali", 845); INSERT INTO employees VALUES (null, "Amani", "Sarrouf", 1000); INSERT INTO employees VALUES (null, "Mhamad", "Harmush", 700); INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", 850); INSERT INTO employees VALUES (null, "Mostafa", "Shawki", 920); INSERT INTO employees VALUES (null, "Jana", "Alkassem", 780); INSERT INTO employees VALUES (null, "Houssam", "Zahrani", 880);

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.

جلب البيانات من الجدول مع دمجها و عرضها بشكل أجمل

الإستعلام التالي يجلب إسم كل موظف و إسم عائلته و يدمجهم في عمود واحد إسمه Employee.
و يجلب راتب كل موظف ويدمجه مع الرمز $ في عمود واحد إسمه Salary.

المثال الأول

SELECT
CONCAT(first_name, ' ', last_name) AS 'Employee',
CONCAT(salary, "$") AS 'Salary'
FROM
employees;
SELECT CONCAT(first_name, ' ', last_name) AS 'Employee', CONCAT(salary, "$") AS 'Salary' FROM employees;

النتيجة

Employee Salary
Ahmad Alhazem 800.00$
Rami Algharib 750.00$
Said Alnaja 900.00$
Noura Jamali 845.00$
Amani Sarrouf 1000.00$
Mhamad Harmush 700.00$
Ahmad Asaadi 850.00$
Mostafa Shawki 920.00$
Jana Alkassem 780.00$
Houssam Zahrani 880.00$

الإستعلام التالي يجلب إسم كل موظف مع إسم عائلته بالإضافة إلى راتبه و نصوص أخرى و يدمجهم في عمود واحد إسمه Employees Salaries.

المثال الثاني

SELECT CONCAT(id, '- ', first_name, ' ', last_name, ' salary is $', salary) AS 'Employees Salaries'
FROM employees;
SELECT CONCAT(id, '- ', first_name, ' ', last_name, ' salary is $', salary) AS 'Employees Salaries' FROM employees;

النتيجة

Employees Salaries
1- Ahmad Alhazem salary is 800.00$
2- Rami Algharib salary is 750.00$
3- Said Alnaja salary is 900.00$
4- Noura Jamali salary is 845.00$
5- Amani Sarrouf salary is 1000.00$
6- Mhamad Harmush salary is 700.00$
7- Ahmad Asaadi salary is 850.00$
8- Mostafa Shawki salary is 920.00$
9- Jana Alkassem salary is 780.00$
10- Houssam Zahrani salary is 880.00$