12 دورة الـ SQL || التحكم في طريقة عرض البيانات
.
.

أحبتي الكرام

بعد أن شاهدنا القدرة الفائقة لأوامر لغة الـ SQL .. في اقتناص المعلومات التي نريدها من قاعدة البيانات بكل دقة .. مهما بلغت ضخامة تلك القاعدة ..
سنتطرق في هذا الدرس لخصائص أخرى من خصائص هذه اللغة الرائعة .. وهو التحكم في طريقة عرض البيانات ..
وسنتعرف على أوامر أخرى تدرج في الكود للحصول على نتائج معينة

========
الدرس عميق .. لكنه بإذن الله سهل .. فقط يحتاج لشدة التركيز .. والقيام بأكثر من تمرين عملي عليه
====
=

DISTINCT / وهو يستخدم لمنع تكرار السجلات ..
مثال::.
شاهد حقل اسم الصنف (DESC) من جدول (Inventory) .. ستجد أنه يحتوي على عدة أصناف مباعة .. تكررت ذكرها أكثر من مرة .. وأنت تريد معرفة جميع الأصناف المباعة .. بغض النظر عن عدد مرات البيع التي تمت عليها .. ففي هذه الحالة تحتاج هذا الأمر .. لأنه سيستخرج لك الأصناف فقط من هذا الحقل .. جرب الكود التالي:
كود PHP:
كود:
SELECT distinct DESC FROM Inventory
ORDER BY / وهو يستخدم لفرز الحقل تصاعدياً ..
مثال::.
شاهد حقل اسم الشركة (COMPANY) من جدول (Customer) .. ستجد انه يحتوي على العديد من أسماء الشركات .. ومرتبة بشكل عشوائي .. وأردت فرزها فرزاً تصاعدياً .. من الألف إلى الياء .. جرب الكود التالي:
كود PHP:
كود:
SELECT * FROM Customer ORDER BY COMPANY
ولفرز الحقل تنازلياً .. أضف كلمة DESC .. في نهاية الكود السابق .. جرب الكود التالي:
كود PHP:
كود:
SELECT * FROM Customer ORDER BY COMPANY DESC
ملاحظة: DESC هنا تختلف عن التي في المثال الأول .. فالتي في المثال الأول .. مجرد اسم لحقل (اسم الصنف) .. أما التي هنا فهو أمر تفهم منه أوامر الـ SQL انه يرد الترتيب التنازلي..

GROUP BY / وهو يستخدم لتجميع القيم المتشابهة .. في الحقل الذي تم وضع التجميع عليه .. فهو يقوم بتجميع القيم المتعددة وضمها إلى بعض ..
غالباً يستخدم مع الدوال التجميعية (sum - count - min - max - ونحوها) ونتجية الدالة التجميعية تكون في حقل جديد .. ويحتاج منا لوضع مسمى لهذا الحقل الجديد ..
مثال::.
شاهد حقل اسم شركة الشحن ( SHIP_NAM) من جدول (ORDERS) .. ستجد انه يحتوي على العديد من أسماء شركات الشحن .. فلو اردت مثلا تجميع أسماء الشركات وضمها لبعض في حقل واحد .. واستخدام دالة تجميعية تقوم بإعطاءك أعلى قيمة تم شحنها عن طريق كل شركة على حده .. والنتيجة في حقل جديد .. جرب الكود التالي:
كود PHP:
كود:
 		 			 SELECT SHIP_NAM, Max(ord_val) AS [أعلى قيمة] FROM Orders GROUP BY SHIP_NAM

جرب دوال التجميع الأخرى !!

حالة أخرى: لاتريد عمل دالة تجميعية .. وإنما تريد فرز أسماء الشركات حسب الاسم .. وتريد حقل آخر يبين قيمة الاعتماد في كل عملية شحن .. فهنا تحتاج تجميع قيم حقل (اسم شركة الشحن) وضمها لبعض بالأمر GROUP BY .. وذكر اسم الحقل الآخر الذي تريد ظهوره .. ولا تحتاج لأي دالة تجميعية .. جرب الكود التالي:
كود PHP:
كود:
 		 			 SELECT SHIP_NAM, ord_val  FROM Orders GROUP BY SHIP_NAM,ord_val

لعلك لاحظت في الكود السابق ..أن أسماء الحقول المدرجة في جملة الـ SELECT .. لا بد أن تتكرر جميعها في جملة الـ GROUP BY ..
ماذا لو حذفنا الحقل ORD_VAL من جملة الـ GROUP BY !! جرب؟؟
.
.
كما قلت في بداية الدرس .. بأنه عميق ويحتاج لتركيز شديد .. وقد بذلت قصارى جهدي في تبسيطه .. وأتمنى أن أكون قد وفقت في ذلك .. وأي تساؤل أتمنى طرحه بدون اي تردد
.
.
الواجب: كون 5 جمل استعلام مختلفة .. مستخدماً فيها إمكانيات الـ SQL التي تم شرحها في هذا الدرس