الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهو الفرق بين Having و Group By و Order By ؟

مغلق
بدأه MS_SQL في 10 يناير 2008 · 10 رد · 6,142 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني اريد أن اعرف ماهو الفرق بين Having و group by و order by ؟( ممكن أمثلة بيسطة لكل منهم ) :blush:

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#2

بسيطة جدا ركز معايا :

Order By : تستخدم للترتيب ( اي ترتيب السجلات عند استدعائها )

حيث الكود التالي يستخدم للترتيب تصاعديا اي من الصغير الي الكبير وهنا عملنا الترتيب علي اساس حقل الاسماء

Select * From Tabel1 Order By NameField

والكود التالي عكس الا فات بالظبط فا مهمته انه يقوم بالترتيب تنازليا اي من الكبير الي الصغير وطبعا هان قمنا علي اساس حقل الاسم

Select * From Tabel1 Order By NameField Desc

Group By : تستخدم في حالة استخدام العمليات الرياضية مثل الجمع لحقل او اكثر ويتم الجمع علي اساس حقل معين

مثال:

عندي جدول فيه كذا حقل وليكن كالاتي ( الاسم - المهنة - المرتب ) وجيت مثلا عاوز اعمل استعلام يجبلي مجموع المرتبات الخاصة بكل مهنة اما بعضها وطبعا الطبيعي ان حقل المهنة بيحتوي علي اكثر من مهنة وليكن مثلا ( مهندسين - ظباط - محاميين - اطباء ) وعاوز انا في المثال ده اجيب اجمالي المرتبات لكل مهنة علي سواء يعني المهندسين عاوز اعرف جملة مرتبتهم كام والاطباء جملة مرتبتهم كام والمحامين كده يعني هنعمل ايه هنعمل جملة استعلام كما يلي :

Select sum("salary") from Tabel1 Group By Jop

- في الجملة السابقة عملت استعلام هدفه انه يجمع مرتبات الموظفين من حقل ( المرتبات / Salary ) بس يجمعهم علي اساس المهنة

والناتج انك هتلاقي ان بعد تنفيز جملة الاستعلام لو هتعرض البيانات علي جريد ان كل مهنة هيجي قصدها مجموع المرتبات تبعها يعين المهندسن اجمالي المرتبات تبعهم كذا والمحاميين قصاده مجموع المرتبات كذا ....................

اما Having دي بصراحة ما اعرفش عنها حاجة لاني اول مرة اسمع عنها يمكن تكون مساوية ل Like او مستخدمة في علاقات الربط بين اكثر من جدول الله اعلم عشان ما ادكش معلومة خطا مش متاكد منها

اتمنا اكون افدت

#3
اقتباس
Group By : تستخدم في حالة استخدام العمليات الرياضية مثل الجمع لحقل او اكثر ويتم الجمع علي اساس حقل معين

كلامك صحيح أخي Max , ولكن الأدق أنها تستخدم لتجميع النتائج حسب فئات معينه (خاصية معينه) , مثلا

Select name,age,sal from Tabel1 Group By name

ففي هذه الحاله يتم ترتيب الأشخاص الذين يحملون الإسم محمد معا , و علي معا على سبيل المثال ...

طبعا كل هذا إضافة إلى النقطه (المثال الذي ذكره أخي) MAX

أما بالنسبة لل Having

فهي تعمل نفس عمل ال Select ولكن على النتائج التي ظهرت من جملة ال Group By

يعني أن وجودها مرهون بوجود ال Group By

مثال

Select name,age,sal from Tabel1 Group By name having sal>1000

في هذا المثال ال Hving تقوم بفلترة النتائج و تظهر فقط من رواتبهم أكثر من 1000

هذا والله أعلم

تحياتي

#4
اقتباس
فهي تعمل نفس عمل ال Select ولكن على النتائج التي ظهرت من جملة ال Group By

يعني أن وجودها مرهون بوجود ال Group By

كلامك صحيح اخ خلدون

ولكنك تقصد Where وليس Select

أليس كذلك؟

#5

مشكورين اخواني :) جزاكم الله خيرا

عندي استفسار حول هذه الكلمة Desc تقصد الترتيب التنازلي بها ؟

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#6
اقتباس
ولكنك تقصد Where وليس Select

أليس كذلك؟

نعم هذا صحيح

اقتباس
عندي استفسار حول هذه الكلمة Desc تقصد الترتيب التنازلي بها ؟

هذا صحيح أيضا تنازلي =Descending

تحياتي

#7

فقط للتوضيح الفرق بين Having & where

ال where تستخدم مع الحقول العادية التي من قاعدة البيانات

ام ال having فهي تستخدم مع الحقول التجميعية

مثال

Select name , max(sal) from Tabel1 where age>30 Group By name having max(sal) > 1000

وايضا عند وضع group by يجب ان تكون الحقول في ال select موجود عليها عمليات حسابية مثل sum &max وغيرها واذا لم يكن موجود عليها يجب ان يوضع الحقل في ال group by

#8

طيب اذا انا اردت ان أعرض ( الاسم مع جميع العمولات مع مجموعهم ) كيف يكون الكود ؟

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#9
اقتباس
طيب اذا انا اردت ان أعرض ( الاسم مع جميع العمولات مع مجموعهم ) كيف يكون الكود ؟

نريد ان نفهم المقصود بالضبط لذا من الافضل ارفاق جدول

#10

اريد ان أعرض اسماء ومبيعات وعمولة وظيفة محاسب مع تجميع المبيعات بالاضافة الى العمولة لكل سجل

الملف الذي يوجد به الجدول في المرفقات

db1.rar

تم تعديل هذه المشاركة بواسطة medo_Programming في 14 يناير 2008 في 20:18

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#11
اقتباس
تجميع المبيعات بالاضافة الى العمولة لكل سجل

يعني تريد المبيعات و العملولة لكل محاسب , أم تريد مجموع المبيعات للكل

إذا كنت تريد المبيعات لكل محاسب فلست بحاجة إلى Group By ولا إلى

sum(sale), sum(comm)

هذا الموضوع مغلق.

مواضيع مشابهة