بتاريخ: 5 مايو 201510 سنة comment_262269 السلام عليكم و رحمة الله و بركاته ممكن شرح مع مثال للخصائص التالية مع SUBQUERY EXIST , NOT EXIST تقديم بلاغ
بتاريخ: 6 مايو 201510 سنة comment_262302 SUBQUERY select col1, col2, (select col3 from table2 b where b.id=a.f_id )col3--subquery from table1 a ; exists select * from table1 a where exists (select 1 from table2 where a.id=b.f_id and col3='yes'); not exists select * from table1 a where not exists (select 1 from table2 where a.id=b.f_id); تقديم بلاغ
بتاريخ: 12 مايو 201510 سنة comment_262438 ببساطة exists هي دالة function تعيد قيمة منطقية صح أو خطأ. مثلا هل فلان موجود الجواب يكون إما نعم أو لا مثال من جدول employees كما يلي: هناك موظف رقمه 201 اريد أن أعلم هل هو موجود ضمن قائمة الأسماء التي تأخذ راتب أعلى من 10000 دولار ؟ إذا كان كذلك أعطني اسمه الكامل رقم هاتفه وبريده الالكتروني. طبعا يمكن تنفيذ الاستعلام باستخدام in لكن سننفذ بالاستعلام كالتالي: select e.first_name || ' ' || e.last_name, e.email, e.phone_number from employees e where e.employee_id = 201 and exists (select * from employees s where s.salary >= 10000 and e.employee_id = s.employee_id) لاحظ ما يلي في الاستعلام السابق: هناك ربط داخلي بين نتائج الاستعلام الخارجي ونتائج الاستعلام الداخلي عن طريق الشرط e.employee_id = s.employee_id ملاحظة أخرى عند استخدام الدالة exists فإن الاستعلام الداخلي لن يهمنا سوى لمعرفة الجواب المنطقي بوجود الموظف المطلوب أو عدم وجوده ضمن قائمة الموظفين الذين يتقاضون راتب أعلى (أو يساوي) 10000 ولن يهمنا هنا نتيجة الاستعلام الداخلي لذلك نفس الاستعلام السابق قد تراه حقيقة بالشكل التالي: select e.first_name || ' ' || e.last_name, e.email, e.phone_number from employees e where e.employee_id = 201 and exists (select 1 from employees s where s.salary >= 10000 and e.employee_id = s.employee_id) وناتج الاستعلام لا يتغير. لكن حقيقة ما قمنا بعمله هنا أننا خففنا على السيرفر الذي تعمل عليه قواعد البيانات، لأنه لم يعد مطالب بالرد بكمية البيانات الكبيرة كجواب للاستعلام الداخلي بل الخرج يكون اي قيمة ثابتة وهنا وضعت أنا القيمة 1 لأنه في الحالتين كما قلت لاتهمنا قيم الخرج للأستعلام الداخلي بل جواب الدالة exists قد يأتي أحد ويقول لماذا كل هذا التعقيد، استطيع الحصول على نفس النتيجة لكن باستخدام in بدلا من الدالة exists الجواب هناك أفضلية للدالة exists على استخدام in أولا من حيث الأداء exists أسرع من in، سترى الفرق بشكل واضح في حال كانت البيانات ضخمة ثانيا لو كنت بحاجة لتنفيذ أمر معاكس فهناك أفضلية كبيرة لاستخدام not exists بدلا من استخدام not in لأننا نعلم خطورة استخدام not in فلو أعاد الاستعلام الداخلي اي قيمة null فستكون النتيجة كلها مضروبة لكن استخدام الدالة not exists ستحمينا من هذه الحالة. وهذه أسباب قد تجعل مدير قواعد البيانات DBA يقوم بتغيير الاستعلام في تطبيقك، ويقد يفرضه عليك إن كان متمكن مما يقوم به. تقديم بلاغ
بتاريخ: 13 مايو 201510 سنة comment_262440 أخي سامر .. انت رائع زادك الله علما وجزاك كل خير تقديم بلاغ
بتاريخ: 14 مايو 201510 سنة كاتب الموضوع comment_262487 الله يفتح عليك يا اخ سامر شرح وافي و رائع شكراً ليكم كلكم كنت محتاجها جداً تقديم بلاغ
بتاريخ: 14 مايو 201510 سنة comment_262491 على الرحب والسعة أنا أقلكم علما، والله يفتح علينا جميعا من علمه وكرمه. تقديم بلاغ
بتاريخ: 3 يوليو 20178 سنة comment_287910 well done thank u so much تم تعديل 3 يوليو 20178 سنة بواسطة abduallah alshaibani تقديم بلاغ
بتاريخ: 3 يوليو 20178 سنة comment_287911 اذا في شروحات عن exists في insert , update , delete افيــــــدونا تقديم بلاغ
بتاريخ: 1 أغسطس 20178 سنة comment_288674 معلش يا هندسة يعني انت قصد حضرتك ان Exists مبتبصش على حاجة فى الكويري التاني غير على الWhere condition بس صح كده ولا انا غلطان تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.