البرمجة

استخراج الوظائف غير المتقدمة باستخدام SQL وLEFT JOIN

في عمليات قواعد البيانات، تأتي التحديات التي تتعامل مع الجداول والاستعلامات المتقدمة، ومن بين هذه التحديات هي استخراج البيانات التي ليست مشتركة بين جدولين. في هذه الحالة، يبدو أن لديك جدولين، واحد يسمى all_jobs والآخر يسمى jobs_applied. تحاول استعراض الوظائف من all_jobs التي لم يتم التقديم لها بواسطة مستخدم ذو uid يساوي 10.

لتحقيق ذلك، يبدو أن استخدام الجملة LEFT JOIN هو اختيار جيد للحصول على جميع السجلات من all_jobs بغض النظر عن وجود تطابق في الجدول الآخر. ومع ذلك، يحتاج الاستعلام إلى بعض التحسين لتحقيق المطلوب.

قد تكون الجملة الشرطية Where b.uid != 10 تسبب تحديدًا غير صحيح للبيانات. من الأفضل استخدام شرط b.uid IS NULL لاختيار الوظائف التي لم يتم التقديم لها بواسطة المستخدم ذو uid يساوي 10.

إليك تحسين للاستعلام:

sql
SELECT a.job_id, a.jobtitle FROM all_jobs a LEFT JOIN jobs_applied b ON a.job_id = b.job_id AND b.uid = 10 WHERE b.uid IS NULL AND a.disable = 0 AND a.draft = 0;

في هذا الاستعلام، تم تحسين الشرط لاختيار الوظائف التي لم يتم التقديم لها بواسطة المستخدم ذو uid يساوي 10، وتم تضمين شرط للتحقق من تعطيل الوظيفة (a.disable = 0) وأنها ليست في حالة مسودة (a.draft = 0).

باستخدام هذا الاستعلام، يمكنك الحصول على قائمة الوظائف من all_jobs التي لم يتم التقديم لها بواسطة المستخدم ذو uid يساوي 10.

المزيد من المعلومات

عند التعامل مع قواعد البيانات وكتابة الاستعلامات، يصبح من الأهمية بمكان فهم عمليات الانضمام وكيفية الوصول إلى البيانات المطلوبة بشكل دقيق. الجملة البرمجية التي قدمتها تهدف إلى استخراج الوظائف من جدول all_jobs التي لم يتم التقديم لها بواسطة مستخدم معين (uid=10) وتكون غير معطلة وليست في حالة مسودة.

في الاستعلام:

  • SELECT a.job_id, a.jobtitle: تقوم بتحديد الحقول التي ستظهر في النتيجة، وهي job_id و jobtitle من الجدول all_jobs.

  • FROM all_jobs a: تحدد الجدول الأساسي الذي سنستخدمه، وهو all_jobs، حيث يتم تعيين اسم الجدول كـ a لتسهيل الرجوع إليه في الاستعلام.

  • LEFT JOIN jobs_applied b ON a.job_id = b.job_id AND b.uid = 10: يستخدم الانضمام اليسار (LEFT JOIN) لاسترجاع جميع الوظائف من all_jobs بغض النظر عن وجود تطابق في jobs_applied، ولكن مع شرط إضافي لضمان أن uid يكون 10 في جدول jobs_applied.

  • WHERE b.uid IS NULL AND a.disable = 0 AND a.draft = 0: تُضاف شروط إضافية في جملة WHERE، حيث يتم استبعاد السجلات التي تحتوي على uid غير موجود في jobs_applied (b.uid IS NULL)، وكذلك التحقق من أن الوظائف غير معطلة (a.disable = 0) وليست في حالة مسودة (a.draft = 0).

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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