عبد الفتاح كيرة قام بنشر ديسمبر 25, 2017 قام بنشر ديسمبر 25, 2017 جزاك الله خيرا أود توضيح الفارق بين استخدام exists و In وشكرا
أبو آدم قام بنشر ديسمبر 26, 2017 الكاتب قام بنشر ديسمبر 26, 2017 يقول خبراء بان الخلافات المزعومة بين Exists و INفي التقنية و الاداء ناتجة عن عدم ادراك (implementations, limitations,bugs ) التطبيقات و المحددات او الحدود و الاخطاء لدى البعض ، و عموما ناتجة في غالبها عن قصور في فهم صحيح لقواعد البيانات . إن التحليل السليم وإحسان تعريف وإنشاء الجداول، ودقة الإحصاءات، وتكوين قاعدة بيانات سليمة ، لها تأثير على خطة التنفيذ للقاعدة وبالتالي على مقاييس الأداء والفاعلية . و للتفصيل نقول ، لا بد من ادراك المشغلات و الجمل و غاياتها و استيعاب تطبيقاتها و محدداتها ( حدودها ) قبل التعامل معها و / أو اختيار أي منها ، فلا بد من تطابق غايتنا من الاستخدام مع الغاية التي جعلها المطورون لهذا المشغل او الجملة ، بالاضافة لمراعاة الحدود و السرعة الافتراضية لاظهر النتائج و الوصول للغايات. و ابتداءا ... لماذا لا نتحقق من الناس الذين طوروا تلك المشغلات في أنظمتهم؟ الجواب المباشر من Microsoft يقول بان : IN Determines whether a specified value matches any value in a sub query or a list. لتحديد ما إذا كانت قيمة محددة تطابق أي قيمة في استعلام فرعي أو قائمة. EXISTS: Specifies a sub query to test for the existence of rows. تخصيص استعلام فرعي لاختبار وجود صفوف. و بالبحث في الغايات نجد أن : Exists مشغل يتحقق من وجود نتيجة استعلام فرعي ، يختبر المشغل ما إذا كان طلب البحث الفرعي يجلب صفا واحدا على الأقل ليعود بالقيمة True، اما اذا لم يتم إرجاع أي بيانات ، يقوم هذا المشغل بالعودة بالقيمة FALSE. Exists هو: · مشغل مقارنة comparison operator · يستخدم في جملة Where ليقيم شرط It Exists · يخبرك اذا كان الاستعلام قد عاد باي نتيجة · يعود بالقيمة True اذا كان الاستعلام الفرعي يحتوي أي صف SELECT agent_code,agent_name,working_area,commission FROM agents WHERE exists (SELECT * FROM customer WHERE grade=3 AND agents.agent_code=customer.agent_code) ORDER BY commission; IN مشغل يقوم بالتحقق من قيمة ضمن مجموعة من القيم مفصولة بفواصل واسترجاع صفوف الجدول المطابقة ، ويرجع بالقيمة 1 عندما تكون قيمة البحث الموجودة ضمن النطاق وخلاف ذلك يرجع بالقيمة 0. يمكن أن تكون قيمة التحقق قيمة نصية ، سلسلة أو كلمة أو جملة (string , word , sentence ) ، أو قيمة رقمية ، ويمكن أيضا التحقق من هذه القيم ضمن مجموعة من القيم مفصولة بفواصل واسترجاع الصفوف التي تحتوي على هذه القيم . SELECT * FROM agents WHERE working_area IN(‘London’,’Mumbai’,’Chennai’); و بالتنقيب بين ملاحظات المطورين و المستخدمين في باب الغايات و باب السرعة ، نورد لكم بعض الملاحظات و التطبيقات من هنا وهناك : IN يدعم فقط علاقات المساواة (أو عدم المساواة عندما يسبقه Not). وهو مرادف ل = أي / = بعض، على سبيل المثال select * from t1 where x in (select x from t2) ; Exists يدعم أنواع مختلفة من العلاقات، والتي لا يمكن التعبير عنها باستخدام IN ، على سبيل المثال select * from t1 where exists (select null from t2 where t2.x=t1.x and t2.y>t1.y and t2.z like '℅' || t1.z || '℅' ) ; في IN لا يمكن مقارنة أي شيء مع NULL ، ولكن شرط Exists يمكن مقارنة كل شيء مع NULL . عندما لا تعرف ان كان السجل موجودا أم لا، يجب عليك اختيار EXIST عندما يكون طلب البحث الداخلي لجلب ألاف الصفوف، سيكون Exists هو الخيار الأفضل عندما يكون طلب البحث الداخلي لجلب صفوف محدودة ، سيكون IN أسرع هذا عموم القول و بعض تفصيله ..... 1 1
عبد الفتاح كيرة قام بنشر ديسمبر 27, 2017 قام بنشر ديسمبر 27, 2017 جزيل الشكر ولا أكتمك سرا الصورة لازالت ضبابية لدى
أبو آدم قام بنشر ديسمبر 27, 2017 الكاتب قام بنشر ديسمبر 27, 2017 أخي عبد الفتاح انا جاهز و بالخدمة شكرا 1
عبد الفتاح كيرة قام بنشر ديسمبر 31, 2017 قام بنشر ديسمبر 31, 2017 بارك الله فيك أعتقد أن أخصر طريق هو مثال على كل نوع لتوضيح الفارق
kamal000 قام بنشر نوفمبر 24, 2018 قام بنشر نوفمبر 24, 2018 السلام عليكم ورحمة الله وبركاته يسعدني ويشرفني الانضمام لكم وانا جدا مسرور اني بينكم 1
محمد التميمي قام بنشر نوفمبر 24, 2018 قام بنشر نوفمبر 24, 2018 حقاً يجدر بنا نحن العرب الافتخار بان لدينا اساتذة وخبراء قهروا اعظم البرامج وصنعوا من لا اجابة اجابات وحلول وابتكارات هي فخر لنا كل الاحترام والتقدير لك اخي ابو ادم 1 1
OmarJM قام بنشر يونيو 18, 2019 قام بنشر يونيو 18, 2019 بارك الله فيك يا ابا آدم ووفقك على الرغم أني جديد في فهم SQL إلا أني استفدت من طرحك المبارك دمت بود وخير وبركة
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.