بسم الله الرحمن الرحيم اليوم هنكمل في chapter 5
نتكلم عن ال select statement advanced select
statement اتكلمنا في المحاضرة السابقة أن احنا
ممكن نحط aliases او range variables لل tables في ال
from clause في ال select عشان نسهّل علينا كتابة
ال query بحيث أنه نحصل نحط اختصارات زي ما احنا
شايفين ال S لل sellers و ال R لل reserves و
اتكلمنا إنه هذا الأمر optional الخيار برجع إلينا
بسهل علينا لكن بيكون إجباري في حالة اللي هي يشمل ما
يكون نفس الجدول هيلزمني ان اكرره أكثر من مرة في ال
from clause بصيب دميز بين الجدولين ب two aliases
مختلفين لنفس الجدول و أخدنا كيف نعمل evaluation
اللي هي ال conceptual query evaluation كيف احنا
بنقيم ال query أو ال select statement ايش الناتج
تبعها هيكون حكينا بتتم العملية من خلال أربع خطوات
و شرحنا الأربع خطوات بشكل كامل و بدأنا ناخد أمثلة
من ضمنها المثال اللي احنا شايفينه انه كيف ممكن
نوجد name ل sailors لبحار اللي عمل حجز ل boat لونه
أحمر
الفكرة أنه انا هعمل شروط في ال qualification في ال
where بحيث ان اربط ال primary key و ال foreign key
تبع كل table من ال tables الموجودة في ال from و في
الآخر احط الشرط اللي انا بديها اللي هو انه انا بدي
ال red boat اللي هم ال b.color بساوي red المثال
هذا أخدناه كمان كيف برضه ممكن نطلع ال color لقارب
اللي حجزوا مين واحد بحار اسمه bluebird نفس الفكرة
مع اختلاف الشرط واختلاف ال columns اللي بديها في
ال select statement بدأنا
نتكلم انه احنا ممكن نحط في ال column expressions
يعني مش بضروري انا بس اعرض الاسم او اعرض العمر
اعرض العلامة انا ممكن اعرض العلامة بعد تعديل معين
انا بديها مثلا بضيف لكل طالب خمس علامات ممكن اعرض
التقييم مثلا لموظفين او للبحارة هدول بعد من كون
ضفنا شيء او طرحنا شيء من التقييم ممكن انا اعرض
العمر زي ما احنا شايفين اعرض ال age في column كمان
مرة بتعرض ال age مضروب في اتنين بنشوف الكلام هاد
عملي عشان نفهم كيف يعني احنا ممكن نعمل expression
على ال column names اللي موجودة في ال select اللي
سمناها target list هذه فتحت عندي ال Oracle ال
command اللي كان عندي كان طالب اني انا بدي اعمل
select الكل شايف ال command اللي انا بكتبه بدنا
نعرض من جدول ال S اللي هو sailors بدي اعرض ال age
العمر و بدي اعمل كمان expression اني انا بدي اضرب
2 اتنين ضرب ال age هذا العمر مضاعف from any table
sailors رمزناه ب S بده اعمله بدون qualification
بدون شرط يعني بده اعرض كل ال sailors بدون شرط
بدون qualification الان هي ال two columns اللي
طلعوهم الأولان ايه ايش اسمه الثاني شايفين كيف اسمه
2 ضرب S.age يعني كتب اسم للكولوم نفس العملية
الحسابية أو ال expression اللي احنا كتبناه وهي طلع
عمره أول بحر 45 مقابله تسعين تلات تلاتين ستة و
ستين يعني ضربهم في 2 طب هل الاسم هذا هي كمعبر يعني
2 ضرب S.age يعني أنا بدي أفترض نفسي أنه أنا سلطة
الأراضيعندي قطع أراضي و أطوالها و طول و عرض كل
قطعة أبعادها هل في داعي أن أخزن في ال 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 و ال .. و ال 2 ضرب S.age as age2 هذا كله
بس في عملية العرض اللي انا بعرضه الاشي اللي
بيظهرلي فقط لا غير ما بيغير على ال database هاي
فائدة ال as نرجع لل slide اللي عندنا بعد ما اتكلمنا
عن ال as بدأنا نتكلم عن ان ال comparison اللي
بنعملها المقارنات بال operators الأكبر و اليساوي و
not equal و greater than and less هي بتنفعني في ال
integers و في ال real numbers في الأرقام بس مش
كتير لها معنى مع ال strings مع ال characters يعني
ممكن احنا في حالة اللي دورنا على red في ال
query
ولا ما أخذناهاش أخذنا
تاعة ال read هاي ال read مثال ال read لما دورنا
على ال color red حطينا يساوي red و red هاد ال
string مش
كتير لها معنى اني أجي احكي ال b.color أكبر من أو
يساوي red
مش 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 و 2 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 العناصر اللي موجودة في واحد مش
موجودة في اثنين مين هم هال a مش موجودة الـ 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 بتستخدم اللغة
ايش طبيعي natural ف union و intersect و except
يكونوا تلاحظوا أنه في الـ Oracle بدل except
بيستخدموا كلمة minus هنا أصلا الـ except عملية ايش
طرح بين .. طرح بين المجموعات فبيستخدموا بدل كلمة
except كلمة minus minus و احنا حكينا اصلا كمان ان
الـ 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
الـ any و الـ all الـ any و الـ all من اسمهم مبين أنه أنا
بدي أقارن مثلا علامة محمد أكبر من علامة الـ all أحط كل
الـ students يعني لازم تكون علامته أكبر من علامة
الجميع لما أحكي علامته أقل من الـ any من أي واحد لو
كان علامته أقل من طالب واحد okay true بس لو كانت
علامته هو الأول على الدفعة و علامته أعلى منهم كلهم
و أجي أحكي علامته أقل من الـ any ايش هتصير false
الـ existence إنها موجودة existence إنها موجودة
يعني شيء موجود أو مش موجود في not ممكن أحط not و
أصير not exists موجود أو مش موجود لو طلعنا على
جدول القوارب عندكم مثلا ما فيش قارب لونه بني أو
أسود فلو احنا عملنا query و في الـ query كان الشرط
إن not exists الـ color بيساوي black ايش هتكون نتيجة
true ولا false not 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 يا إما green or أربط في ايش؟ في 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 طلبنا احنا الرقم من the from
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 و كمان select select تطلع لي
الناس اللي استأجرت أو حجزت مراكب خضراء و select
تطلع لي الناس اللي استأجرت مراكب الحمراء و اعملهم
union ال union by default فيها ايش؟ distinct يعني
مابتعملش تكرار فعطتني الجواب 22 31 64 64 إذا
أنا معنى بالتكرار و يعطيني نفس النتيجة لما كنت
حاطط or بيدعم ال union all تمام؟
طيب وين تبدأ اول اختلاف اذا شوفنا ان ال union فيها
destiny طيب لو احنا حكينا بدنا الناس اللي حجزوا
مراكب خضرة و هم نفسهم حجزوا مراكب حمرة بدل ال or
انسونا من ال intersection بنفع نحط 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 و Luba Dustin و
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 مابتظبطش نكتفي بعد القدر و بنكمل
المرة اللي جاي يوم الأربع ان شاء الله يعطيكم
العافية