**Nested Queries | SQL | Tutorial 18 — Transcript & Summary | SozAI**
Source: https://sozai.app/transcript/nested-queries-sql-tutorial-18/

شرح مفصل للاستعلامات المتداخلة في SQL مع أمثلة تطبيقية لاستخراج بيانات الموظفين والعملاء باستخدام جمل select المتداخلة.

## Key Takeaways

- الاستعلامات المتداخلة تسمح باستخدام نتائج استعلام داخل استعلام آخر للحصول على بيانات دقيقة.
- الكلمة المفتاحية in تستخدم للتحقق من وجود قيمة ضمن مجموعة نتائج استعلام داخلي.
- استخدام limit 1 مهم عند توقع نتائج متعددة لتجنب أخطاء في الاستعلام.
- فهم أساسيات SQL ضروري قبل التعامل مع الاستعلامات المتداخلة المعقدة.
- الممارسة المستمرة هي أفضل طريقة لإتقان كتابة الاستعلامات المتداخلة.

## What the video covers

- تعريف الاستعلامات المتداخلة في SQL وأهميتها في الحصول على معلومات دقيقة.
- شرح كيفية استخدام جملة select داخل أخرى للحصول على معرفات الموظفين الذين باعوا أكثر من 30 ألف دولار.
- ربط بيانات جدول 'works\_with' مع جدول 'employee' للحصول على أسماء الموظفين بناءً على معرفاتهم.
- استخدام الكلمة المفتاحية in للتحقق من وجود معرف الموظف ضمن نتائج استعلام آخر.
- مثال عملي على استعلام متداخل لإيجاد العملاء الذين يتعامل معهم فرع يديره مايكل سكوت.
- كيفية استخراج معرف الفرع الذي يديره مدير معين ثم استخدامه لجلب بيانات العملاء المرتبطين بهذا الفرع.
- أهمية استخدام limit 1 لتجنب إرجاع قيم متعددة عند استخدام شرط المساواة في الاستعلامات المتداخلة.
- نصائح لفهم الاستعلامات المتداخلة من خلال تفكيكها إلى أجزاء بسيطة وممارسة الكتابة.
- توضيح أن الاستعلامات المتداخلة قد تكون معقدة لكنها أساسية للاستعلامات المتقدمة في SQL.
- تشجيع المتابعين على التفاعل وترك تعليقات للمساعدة في تحسين المحتوى.

## Chapters

1. 00:00 مقدمة عن الاستعلامات المتداخلة في SQL
2. 00:38 عرض جدول works\_with وبيانات المبيعات
3. 01:31 ربط بيانات الموظفين باستخدام استعلام متداخل
4. 02:11 كتابة استعلام لجلب معرفات الموظفين الذين باعوا أكثر من 30 ألف
5. 03:17 استخدام استعلام متداخل مع الكلمة المفتاحية in لجلب أسماء الموظفين
6. 05:02 مثال جديد: إيجاد العملاء حسب الفرع الذي يديره مايكل سكوت
7. 05:40 استخراج معرف الفرع الذي يديره مايكل سكوت
8. 07:31 استخدام الاستعلام المتداخل لجلب أسماء العملاء
9. 08:12 أهمية استخدام limit 1 في الاستعلامات المتداخلة
10. 08:55 نصائح ختامية حول فهم وممارسة الاستعلامات المتداخلة

Answers

## Questions about this video

ما هي الاستعلامات المتداخلة في SQL؟

الاستعلامات المتداخلة هي استعلامات تستخدم جملة select داخل استعلام آخر للحصول على نتائج دقيقة تعتمد على بيانات من جداول متعددة.

كيف يمكن استخدام الكلمة المفتاحية in في الاستعلامات المتداخلة؟

تُستخدم in للتحقق مما إذا كانت قيمة معينة موجودة ضمن مجموعة نتائج استعلام داخلي، مما يسهل تصفية البيانات بناءً على نتائج استعلام آخر.

لماذا نستخدم limit 1 في الاستعلامات المتداخلة؟

يُستخدم limit 1 لضمان إرجاع قيمة واحدة فقط في حالة احتمال وجود نتائج متعددة، مما يمنع حدوث أخطاء عند استخدام شرط المساواة.

## Full Transcript — Download SRT & Markdown

00:00

Speaker A

مرحبًا بكم في أكاديمية درافت (Draft Academy). أنا مايك، وفي هذا الدرس سأتحدث معكم عن الاستعلامات المتداخلة في SQL.

00:06

Speaker A

الاستعلام المتداخل هو ببساطة استعلام نستخدم فيه جملتي "select" أو أكثر للحصول على معلومة محددة. في كثير من الأحيان، نرغب في الحصول على معلومات دقيقة جداً، ونحتاج لاستخدام نتائج جملة "select" واحدة لتحديد نتائج جملة أخرى. هذا الموضوع متقدم نوعاً ما، وهو يمثل بداية دخولنا في كتابة الاستعلامات المتقدمة. لكنني أريد أن أوضح لكم كيف يعمل ذلك، لأن الكثير من المعلومات التي ستحتاجون إليها ستتضمن استخدام استعلامات متداخلة.

00:27

Speaker A

فلنضع الآن مطلباً على الشاشة. يقول المطلب: "أوجد أسماء جميع الموظفين الذين باعوا أكثر من 30 ألف دولار لعميل واحد". إذن، نريد الحصول على أسماء الموظفين إذا كانوا قد باعوا أكثر من 30 ألف دولار لعميل واحد. لذا، أول شيء سأفعله إذا

00:38

Speaker A

كنا نحاول معرفة كيفية كتابة هذا الاستعلام، هو إلقاء نظرة على المعلومات المتاحة لدينا. لدينا هنا جدول "works with"، وهذا الجدول يحتوي على إجمالي المبيعات، أليس كذلك؟ وكل صف من هذه الصفوف يحدد مقدار ما باعه موظف معين لعميل معين،

00:55

Speaker A

أليس كذلك؟ على سبيل المثال، الموظف 105 باع 55 ألف دولار للعميل 400، وهكذا. هنا لدينا جزء من المعلومات، أليس كذلك؟ بمعنى آخر، لدينا هنا إجمالي المبيعات. ولكن، ما لا نملكه هو الاسم الأول والأخير للموظف، صحيح؟ نحن لا نملك اسم

01:12

Speaker A

الموظف الفعلي. لكن ما نملكه هو معرف (ID) الموظف الذي قام بالعملية، صحيح؟ إذن، لدينا معرف الموظف.

01:31

Speaker A

ويمكننا استخدام معرف الموظف للحصول على اسمه الأول والأخير. في هذه الحالة، لدينا جزء من البيانات هنا في جدول "works with"، وجزء آخر في جدول الموظفين "employee". وهذه حالة يمكننا فيها استخدام استعلام متداخل. لذا، أول شيء سأقوم به هو

01:38

Speaker A

كتابة استعلام سيجلب لي جميع معرفات الموظفين الذين باعوا أكثر من 30 ألف دولار لعميل واحد. حسناً، سنبدأ بالخطوة الأولى، والتي تعني جلب جميع معرفات الموظفين من هنا إذا كانوا قد باعوا أكثر من 30 ألفاً.

01:57

Speaker A

لنبدأ بكتابة هذا الاستعلام. لن يكون الأمر صعباً بالنظر إلى كل ما نعرفه. سأقوم باختيار employee\_id من جدول works\_with وسأختاره حيث total\_sales أكبر من 30,000. وسنقوم بإنهاء هذا الاستعلام. في الواقع، سأقوم بإضافة اسم الجدول كبادئة هنا.

02:11

Speaker A

لذا، سأكتب works\_with.employee\_id وهنا سنكتب works\_with.total\_sales. فقط ليكون الأمر أكثر وضوحاً. خاصة عندما نتعامل مع استعلامات متداخلة، من المفيد عادةً إضافة اسم الجدول كبادئة تحسباً لوجود أسماء أعمدة مكررة. سأقوم بتشغيل هذا، ومن المفترض أن يعطينا جميع معرفات الموظفين الذين باعوا

02:38

Speaker A

أكثر من 30,000. سترى أننا حصلنا على 102، و105 تظهر ثلاث مرات. يبدو أن 105 قد باع الكثير من الورق. الآن لدينا جميع معرفات الموظفين الذين باعوا منتجات بقيمة تزيد عن 30,000. ما يمكننا فعله الآن هو معرفة الأسماء الأولى

02:58

Speaker A

والأخيرة لهؤلاء الموظفين من هذه المعلومات. لذا، سأقوم بكتابة استعلام آخر هنا. سأكتب select وسأختار employee.first\_name وكذلك employee.last\_name من جدول employee. وهنا سنكتب where، وهذا هو المكان الذي سنستخدم فيه استعلاماً متداخلاً.

03:17

Speaker A

بشكل أساسي، أريد اختيار جميع الموظفين الذين حصلنا على معرفاتهم من هذا الاستعلام. يمكنني القول employee.emp\_id in، وتذكر أن الكلمة المفتاحية in ستعطينا نتيجة إذا كان معرف الموظف ضمن القيم المحددة بين هذين القوسين. لذا، يمكنني فعلياً دمج هذا الاستعلام في الداخل.

03:41

Speaker A

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

04:08

Speaker A

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

04:16

Speaker A

إذا تم إرجاع معرف الموظف من هذا الاستعلام، الذي أعطانا معرفات جميع الموظفين الذين باعوا أكثر من 30,000، فسنقوم بإرجاع اسمهم الأول واسمهم الأخير. حسناً، لنقم بتشغيل هذا.

04:36

Speaker A

وستلاحظ هنا، أننا نحصل الآن على أسماء الموظفين الاثنين. فقد باع مايكل سكوت أكثر من 30,000 وباع ستانلي هدسون أيضاً أكثر من 30,000. لذا، هذه في الواقع طريقة رائعة جداً يمكننا من خلالها معرفة تلك المعلومات.

04:48

Speaker A

إذاً، هذه هي الطريقة التي يمكننا بها استخدام استعلام متداخل، أليس كذلك؟ في كثير من الأحيان ستستخدم الكلمة المفتاحية "in". سأعرض عليك في الواقع بعض الأمثلة الأخرى حيث نستخدم أشياء أخرى. أم، ولكن في هذه الحالة، نحن نتحقق أساساً

05:02

Speaker A

لمعرفة ما إذا كان معرف الموظف موجوداً في هذه النتيجة. حسناً. حسناً، الآن لدي مطالبة أخرى هنا. تقول: "اعثر على جميع العملاء الذين يتم التعامل معهم من قبل الفرع الذي يديره مايكل سكوت". إذاً، هذه واحدة أخرى مثيرة للاهتمام. تقول: "افترض

05:12

Speaker A

أنك تعرف معرف مايكل". إذاً، سنفترض أننا نعرف ما هو معرف مايكل سكوت. هذه الحالة التي سنحتاج فيها مرة أخرى إلى الحصول على بيانات من جدول واحد من أجل إبلاغ البيانات من جدول آخر. لذا، أول شيء نريد أن نكون قادرين

05:26

Speaker A

على القيام به هو معرفة معرف الفرع الذي يديره مايكل سكوت، أليس كذلك؟ لذا، هنا لدينا فروعنا ولكل منها معرف مدير، أليس كذلك؟ وهكذا، ما نحتاج إلى القيام به هو أن نكون قادرين على معرفة أي من هذه الفروع يديره مايكل سكوت. بعد

05:40

Speaker A

ذلك، بمجرد حصولنا على تلك المعلومات، يمكننا معرفة جميع العملاء الذين يستخدمون معرف الفرع ذلك، أليس كذلك؟ لذا، هنا سيقوم معرف المدير بتحديد مايكل سكوت وسيقوم معرف الفرع في الواقع بتحديد جدول العملاء هنا لأنه يحتوي على معرف الفرع كمفتاح خارجي. لذا،

05:54

Speaker A

أول شيء سنفعله هو معرفة الفرع الذي يديره مايكل سكوت. لذا، يجب أن يكون ذلك سهلاً بما فيه الكفاية. يمكننا فقط قول select وسنقوم في الواقع بعمل branch.branch\_id من branch حيث، وتذكر أننا سنفترض أننا نعرف معرف مايكل

06:11

Speaker A

سكوت، لذا يمكنني فقط قول branch.manager\_id يساوي، ومعرف مايكل سكوت هو 102. لذا، يمكنني فقط قول يساوي 102. وهكذا، ما يجب أن يفعله هذا هو أنه يجب أن يعطينا معرف الفرع للفرع الذي يديره. في هذه الحالة، وفي الواقع عفواً،

06:31

Speaker A

بدلاً من branch\_id يجب أن يكون هذا manager\_id. وهذا سيعطينا الرقم اثنين، أليس كذلك؟ لأن اثنين هو فرع سكرانتون، وهو الفرع الذي يديره مايكل سكوت. الآن بما أن لدينا هذه المعلومة، كل ما نريد فعله هو الحصول على جميع

06:49

Speaker A

العملاء الذين يتعامل معهم ذلك الفرع. لذا، يمكننا ببساطة قول select ولماذا لا نحصل فقط على اسم العميل؟ لذا، سنكتب فقط client.client\_name من جدول client حيث سنقول هنا ببساطة where client.branch\_id يساوي، وهنا سنجعله مساوياً لنتيجة هذا الاستعلام.

07:04

Speaker A

إذن، سنجعله مساوياً لنتيجة الحصول على معرف الفرع الذي يديره مايكل سكوت. لذا، سنضع هذه العبارة في الأسفل، وسترى مجدداً أنني أقوم بتضمينها هنا. ما سيحدث هو أن نظام إدارة قواعد البيانات العلائقية عندما يرى عبارة SQL مضمنة كهذه،

07:32

Speaker A

فإنه سينفذها أولاً ثم ينفذ العبارة الخارجية. إذن، يبدأ من الداخل ثم يتجه تدريجياً نحو الخارج.

07:50

Speaker A

وهكذا، سنتمكن من الحصول على معرف الفرع الذي يديره مايكل سكوت، ومن ثم نستخدم تلك المعلومة للعثور على جميع العملاء. لذا، سأضغط هنا على تشغيل (run) وسأقوم بإزالة الفاصلة المنقوطة من هنا، والآن يمكننا تشغيلها وسترى أننا حصلنا على كل هؤلاء

07:57

Speaker A

العملاء. نحصل على أسماء مثل مدرسة دونمور الثانوية، ومقاطعة لاكاوانا، وسكرانتون وايت بيجز، وفيديكس. هؤلاء هم كل العملاء الذين تتم إدارتهم بواسطة فرع سكرانتون. الآن، هناك شيء آخر أريد الإشارة إليه، وهو أنك ستلاحظ هنا أننا نضبط client.branch\_id ليكون مساوياً لنتيجة هذه

08:12

Speaker A

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

08:31

Speaker A

limit 1. وهذا سيضمن لنا الحصول على واحدة فقط من تلك القيم. الآن إذا ضغطت على تشغيل، سترى أنها تفعل الشيء نفسه.

08:48

Speaker A

على الرغم من أننا الآن نضمن فقط أن لدينا قيمة واحدة. لذا، في أي وقت تستخدم فيه المساواة، من الجيد دائماً تحديدها بواحدة ما لم تكن تبحث عن حالة يدير فيها مايكل سكوت فروعاً متعددة، وفي هذه الحالة يمكننا

08:55

Speaker A

استخدام in بدلاً من ذلك. حسناً، كانت هذه لمحة بسيطة عن الاستعلامات المتداخلة. من الواضح أن هذه الاستعلامات قد تصبح معقدة جداً، وما يهم حقاً هو امتلاكك لفهم راسخ للأساسيات.

09:09

Speaker A

إذا لم تكن تفهم الأساسيات التي تحدثنا عنها حتى هذه اللحظة في الفيديو، فإن استخدام الاستعلامات المتداخلة سيصيبك ببالغ الحيرة.

09:22

Speaker A

الاستعلامات المتداخلة ببساطة هي عبارة عن استعلام يغذي استعلاماً آخر، وربما استعلاماً ثالثاً، أليس كذلك؟ نحن نستخدم نتائج استعلام ما للحصول على نتائج من استعلام آخر، وهكذا.

09:30

Speaker A

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

09:43

Speaker A

أصبحت أكثر مهارة في ذلك. شكراً لكم على المشاهدة. إذا أعجبكم الفيديو، يرجى ترك إعجاب والاشتراك في Jeff Academy لتكونوا أول من يعلم عند طرحنا لمحتوى جديد. كما أننا نسعى دائماً للتحسين. لذا، إذا كانت لديكم أ

10:00

Speaker A

أصبحت أكثر مهارة في ذلك. شكراً لكم على المشاهدة. إذا أعجبكم الفيديو، يرجى ترك إعجاب والاشتراك في Jeff Academy لتكونوا أول من يعلم عند طرحنا لمحتوى جديد. كما أننا نسعى دائماً للتحسين. لذا، إذا كانت لديكم أي انتقادات بناءة أو

10:12

Speaker A

أسئلة أو أي شيء آخر، اتركوا تعليقاً في الأسفل. وأخيراً، إذا كنتم تستمتعون بـ Draft Academy وترغبون في مساعدتنا على النمو، توجهوا إلى draftacademy.com/contribute وساهموا في مستقبلنا.

Topics: SQL استعلامات متداخلة select جداول الموظفين جداول العملاء in limit دروس SQL تحليل البيانات أكاديمية درافت

ذاكر هذا الفيديو

- [بطاقات تعليمية من هذا الفيديو](https://sozai.app/ar/tools/ai-flashcard-generator/?from=transcript&id=79150)
- [اختبار عن هذا الفيديو](https://sozai.app/ar/tools/quiz-generator/?from=transcript&id=79150)

مجاني، يصنعه الذكاء الاصطناعي من هذا النص المفرَّغ. دون تسجيل.


---
This is the markdown twin of https://sozai.app/transcript/nested-queries-sql-tutorial-18/ — the same content, without the markup.
Published by SozAI (https://sozai.app). Reuse and quotation are allowed with attribution and a link back.
Machine-readable index: https://sozai.app/llms.txt · data API: https://sozai.app/api/
