SQLتكرار إسم الأعمدة الموضوعة في الإستعلام
- مفهوم تكرار إسم العمود
- تجهيز قاعدة البيانات التي سنطبق عليها
- مثال حول وضع إسم العمود أكثر من مرة في الإستعلام
- الدالة
FORMAT()
- مثال حول تعديل القيم التي سيرجعها الإستعلام بواسطة الدالة
FORMAT()
مفهوم تكرار إسم العمود
عند جلب البيانات من الجدول يمكن تكرار إسم العمود في الإستعلام حتى تحصل على قيم العمود نفسه أكثر من مرة.
من بعدها يمكننا التعامل بشكل مختلف مع البيانات نفسها الموجودة في أعمدة مختلفة.
قد تبدو لك الفكرة مربكة و غير واضحة و لكن لا تقلق لأنك ستفهم فائدتها و أهميتها من خلال الأمثلة.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى لإنشاء قاعدة بيانات جديدة إسمها harmash
و إنشاء جدول فيها إسمه products
يحتوي على بيانات 6 منتجات.
مثال
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها DROP DATABASE IF EXISTS harmash; -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها CREATE DATABASE harmash; -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات USE harmash; -- يتألف من أربعة أعمدة products هنا قمنا بإنشاء جدول جديد إسمه -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات CREATE TABLE products ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), price DECIMAL(7,2) ); -- هنا قمنا بإضافة 6 أسطر في الجدول, أي أضفنا معلومات 6 منتجات -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة INSERT INTO products VALUES (null, 'Keyboard', 15.00); INSERT INTO products VALUES (null, 'Camera', 44.99); INSERT INTO products VALUES (null, 'HDD 1TB', 70.00); INSERT INTO products VALUES (null, 'SSD 1TB', 274.66); INSERT INTO products VALUES (null, 'Mouse', 8.50); INSERT INTO products VALUES (null, 'Table', 44.55);
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash
و إنشاء الجدول products
بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash
من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
مثال حول وضع إسم العمود أكثر من مرة في الإستعلام
الإستعلام التالي يجلب إسم المنتج، سعره، ضريبة قيمتها 10 بالمئة من أصل سعر المنتج، سعر المنتج النهائي بعد الضريبة.
لقراءة المعلومات التي سنعرضها بشكل مفهوم فعلنا التالي:
- العمود الذي يعرض أسماء المنتجات قمنا بتسميته
Product
. - العمود الذي يعرض أسعار المنتجات قمنا بتسميته
Price ($)
حتى تكون العملة التي نتعامل معها واضحة. - العمود الذي يعرض نسية الضريبة على كل منتج قمنا بتسميته
Tax ($)
. - العمود الذي يعرض أسعار المنتجات بعد الضريبة قمنا بتسميته
Final Price ($)
.
مثال
SELECT name AS 'Product', -- إسم المنتج عرضناه كما هو price AS 'Price ($)', -- سعر المنتج عرضناه كما هو price * 0.1 AS 'Tax ($)', -- نسبة الضريبة 10% تساوي سعر المنتج × 0.1 price + (price * 0.1) AS 'Final Price ($)' -- سعر المنتج بعد الضريبة = سعر المنتج + نسبة الضريبة FROM products
النتيجة
Product | Product Price ($) | Tax ($) | Final Price ($) |
---|---|---|---|
Keyboard | 15.00 | 1.500 | 16.500 |
Camera | 44.99 | 4.499 | 49.489 |
HDD 1TB | 70.00 | 7.000 | 77.000 |
SSD 1TB | 274.66 | 27.466 | 302.126 |
Mouse | 8.50 | 0.850 | 9.350 |
Table | 44.55 | 4.455 | 49.005 |
إذاً من خلال سعر المنتج فقط، قمنا بتوليد عامودين إضافيين عرضنا فيهما نسبة الضريبة و سعر المنتج بعد الضريبة.
طبعاً بإمكانك التعديل و الإضافة على الإستعلام كيفما شئت، فمثلاً يمكنك وضع حسم على سعر المنتج بنسبة محددة بدل أن تضع ضريبة عليه.
الدالة FORMAT()
عند التعديل على القيم التي سيرجعها الإستعلام قد يتغير نوعها كما لاحظت في الأمثلة السابقة. فمثلاً عند عرض أسعار المنتجات كما هي كنا نلاحظ أنه يوجد رقمين فقط بعد الفاصلة و لكن عند إجراء أي عملية حسابية على هذا السعر لاحظنا أن الأسعار أصبح يظهر فيها ثلاث أرقام بعد الفاصلة لأن قاعدة البيانات قامت بتحويل نوع السعر من DECIMAL
إلى FLOAT
عند إجراء العمليات الحسابية.
إذا كنت تريد تحديد عدد الأرقام التي ستظهر بعد الفاصلة يمكنك استخدام الدالة FORMAT()
.
عند استدعاء هذه الدالة يجب أن تمرر لها رقمين. الأول هو الرقم الذي تريد تحويله، الثاني يمثل عدد الأرقام التي تريد عرضها بعد الفاصلة.
إذا قمت بتنفيذ الإستعلام التالي سيعرض لك الرقم الموضوع كما هو بالضبط.
المثال الأول
SELECT 10.55 AS 'Number without format'
النتيجة
Number without format |
---|
10.55 |
إذا قمت بتنفيذ الإستعلام التالي سيعرض لك الرقم الموضوع بدون فاصلة و سيتم وضع أقرب رقم له.
المثال الثاني
SELECT FORMAT(10.55, 0) AS 'Number with format'
النتيجة
Number with format |
---|
11 |
مثال حول تعديل القيم التي سيرجعها الإستعلام بواسطة الدالة FORMAT()
الإستعلام التالي يجلب إسم المنتج، سعره بالدولار، باليورو، بالليرة اللبنانية و بالريال السعودي.
لقراءة المعلومات التي سنعرضها بشكل مفهوم فعلنا التالي:
- العمود الذي يعرض أسماء المنتجات قمنا بتسميته
Product
. - العمود الذي يعرض أسعار المنتجات بالدولار قمنا بتسميته
Price ($)
و هو نفسه السعر الأصلي لأننا إفترضنا أن الأسعار تم إدخالها بالأساس بالدولار. - العمود الذي يعرض أسعار المنتجات باليورو قمنا بتسميته
Price (€)
. - العمود الذي يعرض أسعار المنتجات بالليرة قمنا بتسميته
Price (LL)
. - العمود الذي يعرض أسعار المنتجات بالريال قمنا بتسميته
Price (SAR)
.
ملاحظة: السعر بالليرة و الريال لم نعرضها مع فواصل. السعر بالدولار عرضناه كما هو. السعر باليورو عرضناه برقمين بعد بالفاصلة.
مثال
SELECT name AS 'Product', price AS 'Price ($)', -- السعر بالدولار عرضناه كما هو لأن السعر الأساسي بالدولار FORMAT(price * 0.9, 2) AS 'Price (€)', -- 0.9 للتحويل من الدولار إلى اليورو ضربنا السعر بنسبة FORMAT(price * 1500, 0) AS 'Price (LL)', -- 1500 للتحويل من الدولار إلى الليرة ضربنا السعر بنسبة FORMAT(price * 3.75, 0) AS 'Price (SAR)' -- 3.75 للتحويل من الدولار إلى الريال ضربنا السعر بنسبة FROM products
النتيجة
Product | Price ($) | Price (€) | Price (LL) | Price (SAR) |
---|---|---|---|---|
Keyboard | 15.00 | 13.50 | 22500 | 56 |
Camera | 44.99 | 40.49 | 67485 | 169 |
HDD 1TB | 70.00 | 63.00 | 105000 | 263 |
SSD 1TB | 274.66 | 247.19 | 411990 | 1030 |
Mouse | 8.50 | 7.65 | 12750 | 32 |
Table | 44.55 | 40.10 | 66825 | 167 |