بسم الله الرحمن الرحيم اليوم هنكمل في chapter 5
نتكلم عن ال select statement advanced select
statement اتكلمنا في المحاضرة السابقة انه احنا
ممكن نحط aliases او range variables لل tablesفي ال
from clause في ال select عشان نسهّل أحاننا كتابة
ال query بحيث أنه نحصل نحط اختصارات زي ما احنا
شايفين ال S لل sellers و ال R لل reserves و
اتكلمنا إنه هذا الأمر optional الخيار برجع إلنا
بسهل علينا لكن بيكون إجباري في حالة اللي هيشيلما
يكون نفس الجدول هيلزمني ان اكرره اكتر من مرة في ال
from closed بصيب دميز بين الجدولين ب two aliases
مختلفين لنفس الجدولو أخدنا كيف نعمل evaluation
اللي هي ال conceptual query evaluation كيف احنا
بنقيم ال query أو ال select statement ايش الناتج
تبعها هيكون حكينا بتتم العملية من خلال أربع خطوات
و شرحنا الأربع خطوات بشكل كامل و بدأنا ناخد أمثلة
من ضمنها المثال اللي احنا شايفينه انه كيف ممكن
نوجد name ل sailors لبحار اللي عمل حجز ل boat لونه
أحمر
الفكرة أنه انا هعمل شروط في ال qualification في ال
where بحيث ان اربط ال primary key و ال foreign key
تبع كل table من ال tables الموجودة في ال from و في
الآخر احط الشرط اللي انا بديها اللي هو انه انا بدي
ال red bot اللي هم ال b.color بساوي red المثال
هذا أخدناه كمانكيف برضه ممكن نطلع ال color لقارب
اللي حجزوا مين واحد بحار اسمه bluebird نفس الفكرة
مع اختلاف الشرط واختلاف ال columns اللي بديها في
ال select statement بدأنا
نتكلم انه احنا ممكن نحط في ال columnexpressions
يعني مش بضروري انا بس اعرض الاسم او اعرض العمر
اعرض العلامة انا ممكن اعرض العلامة بعد تعديل معين
انا بديها مثلا بضيف لكل طالب خمس علامات ممكن اعرض
التقييم مثلا لموظفين او للبحارة هدول بعد من كون
ضفنا شيء او طرحنا شيء من التقييم ممكن انا اعرض
العمر زي ما احنا شايفين اعرض ال age في columnكمان
مرة بتعرض ال اج مضروب في اتنين بنشوف الكلام هاد
عملي عشان نفهم كيف يعني احنا ممكن نعمل expression
على ال column names اللي موجودة في ال select اللي
سمناها target list هذه فتحت عندي ال Oracle ال
command اللي كان عندي كان طالب اني انا بدي اعمل
select الكل شايف ال command اللي انا بكتبه بدنا
نعرض من جدول ال S اللي هو sailors بدي اعرض ال age
العمر و بدي اعمل كمان expression اني انا بدي اضرب
اتنين ضرب ال age هذا العمر مضاعفfrom any table
sailors رمزناه ب S بده اعمله بدون qualification
بدون شرط يعني بده اعرض call كل ال sailors بدون شرط
بدون qualification الان هي ال two columns اللي
طلعوهم الأولان ايه ايش اسمه التانيشايفين كيف اسمه
2 ضرب S.H يعني كتب اسم للكولوم نفس العملية
الحسابية أو ال expression اللي احنا كتبناه وهي طلع
عمره أول بحر 45 مقابله تسعين تلات تلاتين ستة و
ستين يعني ضربهم في 2 طب هل الاسم هذا هي كمعبر يعني
2 ضرب S.H يعني أنا بدي أفترض نفسي أنه أنا سلطة
الأراضيعندي قطع أراضي و أطوالها و طول و عرض كل
قطعة أبعادها هل في داعي أن أخزن في ال database
مساحتها إذا أنا عندي الطول و العرض فأنا ممكن أخزن
في ال table اسم مالك القطعة رقم القطعة أو القسيمة
طولها و عرضها و المساحة ماخزناش لكن لما بدي أستعرض
المساحة ممكن أعمل selectواطلع الاسم صاحب الأرض و
طولها و عرضها و ال area المساحة أحسبها ال area ايش
المساحة بالساوية اللي هي الطول في العرض L ضرب W ال
length ضرب ال width صحيح؟ طب هل منظر ال column حلو
يطلع عند اسم ال column L star W ولا نكتب area
طب كيف بنعمل الكلام هذا بنستخدم ال as هاي دور ال
as هاجي أعمل ال select اللي عندي و هاجي أكتب a as
مثلا بتسميها اسم جديد age2 و ال from نفس ال from
اللي كانت موجودة هاي enter الان نفس النتائج لكن
إيش الاختلاف اسم ال column اللي ظهر عندى age و
age2 في عندي في ال database جدول في column اسمه
age2هذا بس أنا إيش باعرضه هدف الـ select الـ
select statement بتغيرش أي شيء على ال database
إحنا أخدنا إنه إذا بدي أعمل create في create table
بدي أحذف جدول في drop بدي أعدل في alter بدي أدخل
بيانات insert بدي أعدل على بيانات update بدي أحذف
بيانات deleteالـ select مابتغيرش أي شيء هي بس تعمل
ال view عرض تالي أنا التغيير هذا اللي عملته ان ال
sellers S و ال .. و ال اتنين ضرب S.H as H هذا كله
بس في عملية العرض اللي انا بعرضه الاشي اللي
بيظهرلي فقط لا غير ما بيغير على ال database هاي
فائدة ال as نرجع لل slide اللي عندنابعد ما اتكلمنا
عن ال as بدأنا نتكلم عن ان ال comparison اللي
بنعملها المقارنات بال operators الأكبر و اليساوي و
not equal و greater than and less هي بتنفعني في ال
integers و في ال real numbers في الأرقام بس مش
كتير لها معنى مع ال strings مع ال characters يعني
ممكن احنا في حالة اللي دورنا على looper في ال
query
ولا مااخدنا هاش أخدنا
تاعة ال read هاي ال read مثال ال read لما دورنا
على ال color red حطينا يساوي read و read هاد ال
string مش
كتير لها معنى اني أجي أحكي ال b.color أكبر من أو
يساوي read
مش meaning يعني مالهاش معنى عندى فى ال strings
إلها معنى فى الأرقام لو كانت هذه علامة طالب و هذا
رقم مثلا ستين الطالب اللى علمته ستين و فى هذه
الحالة الطالب اللى علمته أكبر من أو بتساوي ستين بس
فى ال strings مايلها معنى فى ال strings أنا اللى
بهمنى أن أنا أدور بطريقة flexible سهلة على مكونات
ال strings يعني أنا بدور فى ال address تبع الطلاب
عناوين الطلاب مين اللى ساكن فى غزةبغض النظر في وين
هو ساكن، في الرمال، في الشجاعية، في الشيخ رضوان،
في شارع عمرو المختار، شارع التلاتيني، مابيعنيني
بالضيقة بس إنه ساكن في غزة، معناته أنا بتدور على
string بيبدأ كلمة غزة وأي شي بعد هيك مابيعنيني
صحيح؟ هذا الكلام كيف بيتم؟ بيتم من خلال اللي هي
like operator ال like هذهتقدمنا عنها المرة اللي
فات حكينا انه بستخدمها مع ال underscore و ال
percent ال underscore حكينا معناها انه one
character only بس حرف واحد فقط لا غير ال percent
معناها zero or more characters zero or more يعني
ممكن ولا إشي ممكن حرف ممكن اتنين ممكن عشرةالمثال
اللي عندى ان انا بدى ادور على مين على ال sailors
اللى اسمه او اسمهم like بشبه بيبدأ بحرف ال B
وبينتب ايش بينتب B و بين الحرفين كام حرف حرف واحد
على الأقل اللى هى underscore حرف واحد ال percent
ممكن صفر او اكتر يعني صاروا حرف او اكتر لو بحثنا
عن character بهذا الشكل Bو اتنين underscore
percent اي حرفين على الأقل يعني يبقى بنت بإي وفي
حرفين على الأقل الحالة الأولى لو كان عندى بحار
اسمه بوب تنطبق عليه تنطبق عليه لو كان اسمه بوب
دابل او برضه صحطيب لو كان اسمه book بنتهيش
بيه؟ بحكيش عن التانية بحكي عن الأولى لسه الأولى لأ
الأولى لأ طيب لو كان اسمه double B لأ لازم في حرف
النص اللي هي underscore one character لازم يكون
فيه one character ال percent ممكن يكون فاضيفال بي
بي برضه لأ المثال التاني لو كانت ال like بهذا
الشكل لو كان اسمه بوب لو كان اسمه بوب دابل او لو
كان اسمه بوك لو بي بيعرفنا كيف نسخدم ال like و
ممكن مايكونش في نهايته ماحددش حرف ممكن أحدد أحرف
في الوسط يعني مثال تبع غزة أنا هدور على string
بيبدأ مثلا Gaza percent و أسكر معناته أي address
بيبدأ بكلمة Gaza ال address بيبدأ ب Gaza بغض النظر
إيش بعديها تلاتيني، شيخ رضوان، شجعية، whatever،
درج كله بظبطإذا ال person zero or more characters
ال underscore one character وفي الحالتين بعينينيش
إيش هو ال character هو a هو b هو c ما بعينينيه
وإذا أنا حددت حرف معين في مكان في البداية في
النهاية في الوسط مطرح ما بحدده ال like بتدور على
الحرف هذا بتدور عليه فال like احنا بنستخدمها كتير
مع ال underscore و مع ال percent عشان نعمل
matching مع ال strings string matching في ال where
it closed في ال qualification في
عندى في ال linear algebra أو في الجبر و في ال
calculus في عندنا مفهوم اسمه المجموعات ال six
أخدته في المدارسو مشروع بالتفصيل في chapter 4 في
الكتاب و عليه operations كتير بس احنا بدنا نختصر
المادة و بدناش نتعمق كتير في الأمور اللي علاقة في
الرياضياتناخد database مباشرة فبدي ألخص مفهوم ال
sets فكرة ال set يعني المجموعة أنها تتكون من عناصر
يعني عندي مجموعة الطالبات اللي في شعبة مادة ال
database اللي هو أنتوا عناصرها أنتوا الطالبات
المسجلين للمادة عندي set one عناصرها مين A وB وC
وD وE وF عناصرها أحرف ممكن تكون عناصرها مدنممكن
مواطنين ممكن موظفين عندي ستة تانية برضه فيها عناصر
المجموعات هذه بنعمل عليها operations في الجبر
الاتحاد و التقاطع انه انا عندي مجموعة A و مجموعة B
هاي A و هاي B لما احكي اتحاد المجمعتين Union يعني
كل العناصر اللي في المجمعتين التقاطع منطقة اللي
وين؟ في الوسطالعناصر الموجودة في A و B الطلاب
المسجدين database one ومسجدين برمجة اتنين يعني
لازم يكون مسجد المادتين في A و في B مسجد database
one ومسجد برمجة اتنين هدول هم التقاطع بين المادتين
بين الكورسين بين ال two sets وفي عند ال accept
الفرق اللي هي المنطقة ايشA فرق B اللي هي المنطقة
اللي موجودة في A مش موجودة في B يعني أنا بأحكي
الطلاب اللي مسجلين database one لكن مش مسجلين برمج
اتنين ممنوع يكون مسجل برمج اتنين إذا كان مسجل برمج
اتنين مش من ضمن الفرق ال acceptلو طبقنا الكلام هذا
على المجموع تاني set 1 و set 2 هنلاقي أن ال union
بين set 1 و set 2 هو مجموع العناصر كلهم فهيكون
عندي a و b و c و d و f كاملا و ال g و ال h لأن ال
b و ال e و ال f ذكرناهم هي ال b و هي ال e و هي ال
f لما تطلع ال intersect التقاطع بينهم هي ال b
موجودة في الجهتينال E موجودة ال F موجودة ال G و ال
H لا إذا التقاطع P و E و F هاي ال intersect بين
set 1 و set 2 و لو عكسنا يعني حكينا set 2 union
set 1 set 2 intersect set 1 الجواب نفسه زي عملية
الجمع لما احنا بنحكي 2 زائد 3 هي نفس 3 زاد 2 لكن
ال exceptمافيش مجال اني ابدل زي الطرح خمسة نقص
اتنين هي نفس اتنين نقص خمسة لأ ال except هتكون
دايما في بالي انها زي ايش عملية الطرح set one
except set two العناصر اللي موجودة في واحد مش
موجودة في اتنين مين هم هال ايه مش موجودة ال c و ال
dمش موجودين في اتنين ال E و ال F موجودين اذا مين
ضال A و C و D هاي A و C و D العكس set 2 except set
1 عندي ال B و ال E و ال F هاي و موجودين وصلتهم
باللون الأزرق ضال عندي مين G و H كلام هذا المفهوم
هذا في الرياضيات ناخده على ال database حاجة أحكي
بدي أنا البحارةاللي حجزوا قوارب حمرة و اللي حجزوا
قوارب خضرة كيف ده اكتب هذا ال query؟ حاجة اعمل
select و اختار ال sailors اللي حجزوا boats red و
اعملهم union اتحاد مع البحارة اللي حجزوا boats
greenهيصاروا اللي حاجزين أخضر و اللي حاجزين أحمر
لو أنا بدي البحارة اللي حاجزين مراكب حمرة لكن
ماحجزوش مراكب لونها أزرق هاجي أعمل except لو بدي
اللي .. اللي حجزوا مراكب حمرة و برضه في نفس الوقت
كانوا حاجزين خضرة ده استخدم intersect
نيجي ناخدها على مثال الطلاب عندنا في الجامعة أنا
بدي الطلاب اللي مسجلين database واحد و برمجة اتنين
اطلع أسماءهم ده اروح اعمل union انا بدي الطلاب
اللي مسجلين برمجة واحد و برمجة اتنين في نفس الوقت
يعني هو الطالب نفسه مسجل المادتين الطالب نفسه مسجل
المادتين بدي أروح أعمل intersect لو بدي بس الطلاب
اللي مسجلين database واحد وردعون برمج اتنين بدي
أشياههم بدي أروح أستخدم ال accept نطبق الكلام هذا
عملي كمان شوية في إنه كمان operations اللي علاقة
في ال sets في المجموعات مفهوم المجموعاتأول إشي
حكينا عن ال union و ال intersect ال intersect و ال
except هدول موجودين في ال SQL زي ما هم بنكتبهم نفس
لفظهم بالإنجليزي لإنه حكينا ال SQL بتستخدم اللغة
إيش طبيعي ناتشرال ف union و intersect و except
يكونوا تلاحظوا أنه في ال Oracle بدل except
بيستخدموا كلمة minus هنا أصلا ال except عملية إيش
طرح بين .. طرح بين المجموعات فبيستخدموا بدل كلمة
except كلمة minusminus و احنا حكينا اصلا كمان ان
ال SQL standard في ال products الموجودة في السوق
فيه اختلافات صغيرة و شفنا كيف ان ال real و ال
integer ممكن يكون اسمها number فيه character و فيه
var character من ضمن الاختلافات موضوع ال minus و
ال except فعندكم في المختبر اللي انت بتشتغله على
Oracle صحيح؟ مش على DB2 ولا على Microsoft SQL
هتستخدم مبدأ كلمة except في ال query عشان تحطه
minusفي عندي كمان ال in و ال any و ال all و ال
exists ال in إن أفحص عنصر موجود في مجموعة يعني زي
ما أنا أحكي a in set one هل a موجودة في set one
عنصر بسأل أنا عن عنصر موجود في المجموعة هذه موجود
و ممكن في كمان زي ما في in في إيش في notفي not in
لما أجي أحكي أنه ال H not in set one ال true ولا
ال false ال true الأولى true والتانية true لكن لو
حكيت ال G in على طول false in set two
الأني و الأول الأني و الأول من اسمهم مبين إنه أنا
بدي أقارن مثلا علامة محمد أكبر من علامة allأحط كل
ال students يعني لازم تكون علامته أكبر من علامة
الجميع لما أحكي علامته أقل من any من أي واحد لو
كان علامته أقل من طالب واحد okay true بس لو كانت
علامته هو الأول على الدفعة و علامته أعلى منهم كلهم
و أجي أحكي علامته أقل من any إيش هتصير false
ال existence إنها موجودة existence إنها موجودة
يعني إشي موجود أو مش موجود في not ممكن أحط not و
أصير not exists موجود أو مش موجود لو طلعنا على
جدول القوارب عندكم مثلا مافيش قارب لونه بني أو
أسود فلو أحنا عملنا query و في ال query كان الشرف
إن not exists ال color بساوي black إيش هتكون نتيجة
true ولا falsenot exists اللون black هتكون true
exist اللون black هتكون false نبدأ ناخد ال .. ال
.. ال six operations هدول اسمهم six operations
العمليات على المجموعات نبدأ ناخدهم واحدة واحدة
هناخد ال union و ال intersect و ال except و ندخل و
بعدين هنتكلم عن ال in و ال exists و ال all و ال
any أول شيء ال unionاحنا في السابق لو كنا بدنا
ندور على ال sailors اللي استأجروا او حجزوا ال
boats اللون هم red او green سواء اللي حجزوا ال red
او ال green كان لازم نكتب ال query بالشكل هذاكان
لازم نكتب ال query بالشكل هذا انه select SID رقم
البحار من جدول from sailors, serfs و boats where
بدأ أربط بين الجدول SID في ال S مع ال R زي بعض ال
BID في ال R و ال B زي بعض و أحط بعدها الشرط اللي
عندي الشرط اللي عندي and بين قوسين ال color يا إما
red يا إما greenor هربط في ايش؟ في or طلعوا على
الجدول اللي عندكم وين
ال red وين ال green تلت مراكب ايش أرقامهم 102 103
104 هروح على الحجوزاتوالي موجودين الحجزات هاي وين
موجودة؟ هاي 102 و هاي 103 و هاي 104 كمان و هاي 102
و 103 و 104 هاي الجزية دي كلها و هاي كمان 102 و
103 مين
الأرقام البحارة اللي حجزينهم؟ 22 و 31
و 64 64 مرتين و ال 31 ثلاثة و ال 22 ثلاثة صحيح مين
ال 64 احنا إيش كنا طالبين نعمل الرقم طالبين الرقم
ال SID بدنا بس الرقم كفاية هيك هيطلع عند مين ال 22
ثلاث مرات و ال 31 ثلاثة و ال 64
64 مرة و ال 74 مرة صحيح هذه مرة و هذه مرة هذو
رقمين مختلفة 64 و 74 هذا
الحجز مع 101 101 ايش لونه بلو احنا عامين دورنا
حكينا red or .. red or green اذا هي نتيجة الكوير
اللي هتطلع عندى بالشكل هذانتأكد؟ نجرب؟ و لا واضحة؟
و لا لازم ناخد مثال على ال Oracle؟ واضحة؟ طيب،
الآن ممكن أوصل لنفس النتيجة بإني أعمل two queries
منفصلات،
واحدة بس لل Red و واحدة بس لل Green و أجمع بينهم
في مين؟ في Union و تعطيني نفس .. تعطيني نفس
النتيجةحين هنشوف إيش ميزتها لو بدى أغير في أمور
لما هغيرها هال union هي الأظبط هنا هنشوف كل إيش
بالمثال مين ذكرني في ال query اللي كتبناها عملنا
select لل S SID طلبنا احنا الرقم من from the
sellers S و ال reserves
و ال quotes بي where where بدنا نربط بين الجزاوي
ال SID بساوي ال R SID and ماننساش ال and ده نحكي
ال R BID بتساوي ال B.BID and
طيب عشان لما ننزل أسطور في ال SQL ال SQL سواء كتبت
كل ال command في سطر كله في سطر أو كتبته على عشرين
سطر نفس الشيء هو ببدأ يترجم من ساعة مكتب select
لعند محط سيمي سيمي كله فانا بدأ أنزل سطر عشان أرتب
بس الشغل هنفتح قوس وإيش نكتب بي دوت color بتساوي
red or
b.color بتساوي green
22
كم مرة اتكرر؟ مرة، تنتين، تلاتة، مرتبين؟ ليش؟ في
ال database مافيش معنى للترتيب لأن أنا لما بدي
أعرض إذا بدي أرتبهم في orderفى order by فى command
اسمه order by بس احنا لسه ما شرحناه فعندي هى ال 22
تلات مرات فى عندي ال 31 برضه تلات مرات فى عندي ال
64 مرة و ال 74 موجود مرة طيب نجرب نعمل نفس ال ..
ال .. ال query بس بإيش بال union ده عمل select sid
from
الـ where ال
SID بيساوي ال RSID و ال RBID بيساوي ال BID ال B
dot color بتساوي red بس و بدى أنزل سطر و أعمل الأن
union و أرد أعمل selectلل SID from
وهي
ال where وبدل
ال red احط ايش ال green ايش
الاختلاف
مش تكرار by default حطينا احنا كلمة distinct؟ by
default ال union و ال intersect و ال except
بيعملولي distinct طب و اذا بديش انا distinct بدي
اخد نفس النتيجة اذا انا بدى التكرار بحط union all
intersect all except all يعني هيبدى عيدها نفسهاو
بدى احط بدل union union all هى بدنا نحط هى ال
select و هى ال from و هى ال condition اللى كان
عندنا ال red و الأن بدنا نستخدم ايه هش union all
نرجع كمان مرة select
الـ from ال where green إيش رجع؟ أعطاني نفس
النتيجة بالتكرار يعني أنا بدل ما أكتب ال query و
يكون فيها or اللي هو ال b color red سوى red or ال
b color بيساوي green استعادت عنها بإني عملت two
queries منفصلات select و كمان selectselect تطلع لي
الناس اللي استأجرت أو حجزت مراكب خضراء و select
تطلع لي الناس اللي استأجرت مراكب الحمراء و اعملهم
union ال union by default فيها ايش؟ distinct يعني
مابتعملش تكرار فعطتني الجواب 22 31 64 64 إذا
أنا معنى بالتكرار و يعطيني نفس النتيجة لما كنت
حاطط or بيدعم ال union all تمام؟
طيب وين تبدأ اول اختلاف اذا شوفنا ان ال union فيها
destiny طيب لو احنا حكينا بدنا الناس اللي حجزوا
مراكب خضرة و هم نفسهم حجزوا مراكب حمرة بدل ال or
انسونا من ال intersection بنفع hot and فكروا فيها
بنفع نحط and هل في مركب هو نفسه لونه أحمر و أخضرلو
حطينا and يعني زي كده إذا احنا بنسأل ال Oracle
إننا بدنا مركب لونه أخضر و أحمر طالب علامته إحنا
لما نحكي بدنا الطلاب اللي جايبين خمسين و الطلاب
اللي جايبين سبعين علامتهم بنعملهم union خمسين و
سبعين union إذا ماجي أحكيله and يعني الطالب نفسه
ماخد خمسين و سبعين في حد بياخد نفس المساقع علامة
خمسين و سبعين مافيش عندي مركب لونه أحمر و أخضر في
نفس اللحظةإيش الحل؟ الحل بدنا نروح لل 6 operations
بدنا نستخدم اللي هي مين؟ بدنا نستخدم ال Intersect
ال Intersect هتطلعلي قائمة .. هتطلعلي قائمة باللي
أنا بديها طيب تطلعوا على الجدول عندكم و أنا بكتب
ال query بتاعة ال Intersect نفس ال query بس تحوله
ل Intersect تطلعوا على الجدول عندكم مين هم الناس
استجروا قوارب حمرة و خضرة في نفس ال .. ال what؟
هي select from وهي ال wear condition اللي كان
عندنا red وهي intersect intersect وهي
greenيلا مين يعطينا نتيجة بسرعة 21 22 31 21 22 31
بس بس مين ناخد 64 و 74 مش نفس الشخص مش نفس الرقم
طيب هنضغط enter و نشوف 22 31 Dustin و LubaDustin و
Louber 22 و 31 هدول حجزوا في نفس اللحظة هل ممكن
اكتب ال query هذه ب and بدل ال or؟ مش ممكن هذه ال
query اللي كانت عندنا في ال slide شرحناها بال or
عملناها بال union و لاحظوا ان احنا كان شغلنا على
ال SID طب لو كان شغلنا عنين؟ و عملنا intersect
intersect مش unionرقم احنا كان هنا 64 و 74، ايش
اسمهم 64 و 74؟ هوراشيو نفس الاسم، الاتنين مختلفين
بس نفس الاسم، احنا لو كان هتهيأ Intersect و بدل
SID كان مطلوب النام، هياخد .. هياخدهم ولا لأ؟ احنا
لما عملنا Intersect مين طلع؟ طلع لوبر و داستن، هل
هيظلهم لوبر و داستن ولا هيصير لوبر و داستن و
هوراشيو؟
فاكروا فيها في البيت أنه بده نحط ال name و نعمل
intersect هاي السؤال أنا سألته هل بيظبط أحط ال and
بدل ال or عشان أنا أحصل على ال intersection الجواب
لأ هذه ال version مابتظبطش نكتفي بعد القدر و بنكمل
المرة اللي جاي يوم الأربع ان شاء الله يعطيكم
العافية