Abdulaziz Aldawk | 🇸🇦
Abdulaziz Aldawk | 🇸🇦

@a_Aldawk

14 تغريدة 31 قراءة Oct 19, 2019
السلام عليكم
اليوم راح اسوي ثريد عن تنسيق query in sql قاعده بيانات
هي عباره عن AS-Alias, group by, select, Concatenation, distinct
الى ماشاف ثريد السابق يتفضل من هنا
#FCIT18
#FCIT19
#حزب_المبرمجين
راح أبسط لكم المعلومة بأذن الله
بسم الله نبدء.
Having VS Where:
ايش الفرق بينهم
Where: as condition from select
يعني لما اختار جدول واحد و ثم اسوي الشرط أني ابي جدول يعرض لي فقط أسم معين اي اسم Aziz
زي موضح بالصوره طبعآ مايصلح تستخدم having بدال where لانه لانه Where هذا شرط تبع select فقط يتبع
ولكن Having
يجي معا group by طبعآ هو نفس where يعمل كاطريقة شروط او مشروط على حسب group by
مثال انا قلت ابي يعطيني العدد كل اسماء customer الى عندهم عنوان و الى ماعندهم بنفس الوقت بشرط يكون العدد اكبر من 2
مثل بالصوره طلعت لي الناتج الى ماعندهم عنوانين هم 3 فقط بشرط اكبر من 3.
Concatenation هي الفاصله او مساحة بين فاصله
خلينا نقول عندنا جدول و في اسم الاول و أسم الاخير مثل صوره رقم واحد بس احنا نبي نخلي الاثنين هذولي في واحد
يعني بدال مايصير اسم الاول واسم الاخير ~ نخليهم مع بعض
ايش نسوي ؟ نسوي كذا |','| طبعآ الفاصلة الى تحت مو لازم تكون موجوده يتبع
ممكن بس مسافة زي كذا ||' '|| او ممكن نقطة يعني اي شي
الناتج تصير زي الى بالصوره. تلاحظون كيف صار شكله مرره جميل :). بس لازم نجمل الجدول بدال مايكون cust_fname||'.'|| cust_last name
نبي نغير الاسم عشان يطلع جدول جميل ومرتب
نحتاج شي اسمه AS-Alias كيف نستخدمة؟ راح اشرح لكم الان
طبعآ بعد ماكتبنا كذا cust_fname||'.'|| cust_last name لازم نكتب قدامها as customername
زي موضح بالصوره بس ملاحظة مهمة: هذي الحركة فقط تكون عند select عشان يجمل لك الجدول بالتنسيق ومايصلح ابدآ تستخدم الاسم بعد as في Where مثلآ او مكان اخر لانه sql ماراح يعرفه ابد ويظهر لك خطأ.
طيب الان راح نتكلم شوي عن group by
ابيكم تشوفون الصوره او تخلونه على جمب عشان توصل لكم المعلومة صح
group by عندها count, avg and sum
طبعآ كل وحده لها شغله معينه
طيب انا ابي اسوي استدعاء اسم customer و كم واحد عنده سياره و كم شخص مخزن له عناوين تمام! يتبع
لو تلاحظون معاي بالصوره في count(*) جاب لي عدد سيارات الى يمتلكها كل customer و مين عنده عنوان
بس في مشكلة هنا انه cust Address طلع لي 2 يعني عندي عنوانين و بالاساس عندي عنوان لازم نحدد ونحط شي اسمه Distinct
ايش هو Distinct يقولك ابي عنوان لكل شخص مثلآ
انا عندي واحد.. يتبع
نكمل أنا عندي واحد يقولي هذا شخص اسمه Aziz عنده عنوان واحد فقط يعني تحديد او uniqe
مثل الى بالصوره تلاحظون اني حطيت distinct بعد cust address
وراح يطلع لي عند اسمي آي عندي عنوان واحد فقط بس بدون distinct راح يعطيني مرتين لانه اسمي اتكرر مرتين بسبب عندي سيارتين وقال عنده عنوانين.
طيب كيف آلية العمل او طريقة group by ؟
بسيطة
اذا تبي تستخدم count الحالها مايحتاج تحط group by
ولكن اذا تبي تجمع عدد معين او مثلآ كم customer عنده سياره
لازم تحط group by
هنا مثال بالصوره
اي شي يجي بعد select و مو من ضمن COUNT او AVG او SUM
لازم يكون من ضمن GROUP BY يتبع
مثل ماكتبت انا select CUST_FNAME, count(make) as cars from customer natural join vehicle
group by CUST_FNAME
بكذا راح يجيب لي اسماء CUSTOMER و كل CUSTOMER كم معاه CARS
و ORDER BY حطيته عشان يعمل ترتيب من A TO Z
و اذا حاب تستخدم sum آي يجمع لك كل الاعداد الى موجوده يتبع..
مثال بالصوره في جدولين جدول الى تحت قبل مااحط sum و الى فوق بعد مااستخدمت sum
طبعآ مثل ماتلاحظون مايحتاج نسوي group by لانه sum الحاله فقط الا اذا كان تبي تحط زياده زي اسم زي الى فوق لازم تسوي group by
و نفس الشئ مع avg() يجيب لك متوسط السعر مثل موضح بالصوره ثانيه..
وبس أنتهينا الشرح الحمدالله~
أتمنى يكون الشرح بسيط وسهل و مفهووم.
اذا في خطا او شي مافهمتوه خبروني واشرح لكم :)
أتمنى لكم بالتوفيق ياأصدقائي :)
كان معاكم مستر عزيز
اشوفكم على خير ~
@Rattibha رتبها وشكرآ

جاري تحميل الاقتراحات...