كيفية معالجة البيانات باستخدام دوال CAST وتعابير الضم في SQL


يا هلا فيك! اليوم راح نتكلم عن شغلتين أساسيتين ومهمة جداً في SQL: دوال CAST وتعابير الضم JOIN. هذي الأدوات بتخليك تتحكم بالبيانات وتطلع منها اللي تبغاه بالضبط.

أولاً: دالة CAST - تحويل أنواع البيانات

دالة CAST بكل بساطة هي أداة سحرية بتحول لك نوع بيانات عمود معين إلى نوع بيانات آخر. ليش نحتاجها؟ أحياناً يكون عندك رقم مخزن كنص، أو تاريخ مخزن كنص، وتحتاج تحوله عشان تقدر تسوي عليه عمليات حسابية أو مقارنات صحيحة، أو حتى عشان يتوافق مع عمود ثاني في عملية ضم.

صيغة الاستخدام:

CAST(expression AS data_type)

أمثلة سريعة:

1. تحويل نص لرقم صحيح:

لو عندك عمود ProductID نوعه VARCHAR بس يحتوي على أرقام، وتبغى تحوله لـ INT:

SELECT CAST(ProductID AS INT) AS ProductID_Int
FROM Products;

2. تحويل رقم لنص:

إذا عندك عمود Price نوعه DECIMAL وتبغى تعرضه كنص مع علامة العملة مثلاً، ممكن تستخدم CAST كجزء من عملية ربط نصوص (concatenation):

SELECT 'السعر: ' + CAST(Price AS VARCHAR(10)) AS FormattedPrice
FROM Orders;

3. تحويل تاريخ ووقت لتاريخ فقط:

لو عندك عمود OrderDateTime نوعه DATETIME وتبغى تشوف التاريخ بس بدون الوقت:

SELECT CAST(OrderDateTime AS DATE) AS OrderDateOnly
FROM Orders;

ملاحظة مهمة: انتبه لما تحول! لو حاولت تحول نص ما هو رقم إلى رقم، أو نص ما هو تاريخ إلى تاريخ، راح يطلع لك خطأ (Error). تأكد إن البيانات قابلة للتحويل.

ثانياً: تعابير الضم (JOIN Expressions) - ربط الجداول

نادراً ما تكون كل بياناتك اللي تحتاجها في جدول واحد. تعابير JOIN هي اللي تخليك تربط جدولين أو أكثر مع بعض بناءً على علاقة منطقية بينهم (غالباً عمود مشترك). هذا بيخليك تشوف صورة كاملة للبيانات.

أنواع الـ JOINs الشائعة:

  • INNER JOIN: يرجع الصفوف اللي ليها تطابق في الجدولين فقط. (الأكثر استخداماً)
  • LEFT JOIN (أو LEFT OUTER JOIN): يرجع كل الصفوف من الجدول الأيسر، والصفوف المتطابقة من الجدول الأيمن. لو ما فيه تطابق في الأيمن، يحط NULL.
  • RIGHT JOIN (أو RIGHT OUTER JOIN): عكس الـ LEFT JOIN. يرجع كل الصفوف من الجدول الأيمن، والصفوف المتطابقة من الجدول الأيسر. لو ما فيه تطابق في الأيسر، يحط NULL.
  • FULL JOIN (أو FULL OUTER JOIN): يرجع كل الصفوف من الجدولين، سواء فيه تطابق أو لا. لو ما فيه تطابق في أحد الجداول، يحط NULL للصفوف المقابلة.

أمثلة سريعة:

1. INNER JOIN (الضم الداخلي):

لنفترض عندك جدول Customers وجدول Orders. تبغى تشوف طلبات العملاء اللي لهم طلبات بس:

SELECT C.CustomerID, C.CustomerName, O.OrderID, O.OrderDate
FROM Customers AS C
INNER JOIN Orders AS O ON C.CustomerID = O.CustomerID;

هنا، C.CustomerID = O.CustomerID هو شرط الضم. راح يجيب لك بس العملاء اللي عندهم طلبات والطلبات المقابلة لهم.

2. LEFT JOIN (الضم الأيسر):

تبغى تشوف كل العملاء، حتى اللي ما عندهم طلبات، وتشوف طلباتهم لو فيه:

SELECT C.CustomerID, C.CustomerName, O.OrderID, O.OrderDate
FROM Customers AS C
LEFT JOIN Orders AS O ON C.CustomerID = O.CustomerID;

بهذا المثال، كل العملاء راح يظهرون. لو العميل ما عنده طلب، حقول OrderID و OrderDate راح تكون NULL.

تلميح: دائماً استخدم اسم مستعار (Alias) للجداول (مثل C لـ Customers و O لـ Orders) عشان تخلي الكود أقصر وأسهل للقراءة والفهم.

تطبيق CAST و JOIN معاً

أحياناً تحتاج تستخدم CAST داخل شرط الـ JOIN لو كانت أنواع البيانات في عمودين الربط مختلفة (وهذا مو أفضل ممارسة، يفضل تكون أنواع البيانات متطابقة في الأساس، لكنها حل موجود):

SELECT P.ProductName, S.SupplierName
FROM Products AS P
INNER JOIN Suppliers AS S ON CAST(P.SupplierID AS VARCHAR(10)) = S.SupplierID_Text;

هنا، افترضنا أن P.SupplierID رقمي و S.SupplierID_Text نصي، فاضطرينا نحول P.SupplierID لنص عشان نقدر نربط بينهم.

وبكذا نكون غطينا أساسيات CAST و JOIN. هذي الأدوات أساسية جداً لأي شخص يتعامل مع قواعد البيانات وبتفتح لك أبواب كثيرة لمعالجة البيانات بشكل فعال.