البرمجة

استعلام Oracle لاختيار البيانات غير المقترنة

عندما يتعلق الأمر بالبحث عن البيانات غير المقترنة في Oracle، يمكنك استخدام استعلام NOT EXISTS للعثور على السجلات التي ليس لها تطابق تام في الحقول المحددة. في حالتك، يمكننا استخدام الاستعلام التالي:

sql
SELECT * FROM your_table t1 WHERE NOT EXISTS ( SELECT 1 FROM your_table t2 WHERE t1.Id = t2.Id AND t1.cost = t2.cost AND t1.hour = t2.hour AND t1.type = t2.type AND t1.rowid <> t2.rowid );

في هذا الاستعلام، نستخدم NOT EXISTS للعثور على السجلات التي ليس لها نفس Id و cost و hour و type ولكنها ليست نفس الصف (t1.rowid <> t2.rowid). إذا كنت تستخدم حقيقة أن rowid مميز لكل صف، ستتجنب السجلات المقترنة.

يرجى استبدال your_table بالجدول الفعلي الذي تعمل عليه.

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

بالطبع! لنقم بتوضيح الاستعلام أكثر:

  1. SELECT *: هذا يعني استرجاع جميع الحقول من الجدول.
  2. your_table t1: هنا، نقوم بتعيين الجدول المراد البحث فيه بالاسم t1، وهو ما يمكننا استخدامه للإشارة إلى هذا الجدول في باقي الاستعلام.
  3. NOT EXISTS (...): هذا الجزء من الاستعلام يستخدم للتحقق من عدم وجود سجل آخر يطابق الشروط المحددة داخله. إذا كان الاستعلام الفرعي يرجع نتيجة (أي لديه سجلات)، فإن NOT EXISTS يعود بقيمة صحيحة وتتم إعادة السجل الأصلي.
  4. SELECT 1 FROM your_table t2 ...: هنا، نقوم بالبحث عن أي سجل آخر t2 في الجدول يطابق الشروط المحددة.
  5. WHERE t1.rowid <> t2.rowid: هذا الشرط يضمن أننا لا نعيد نفس السجل. إذا كان rowid متميزًا لكل سجل، فهذا يضمن أننا نستبعد السجلات المقترنة.

باختصار، الاستعلام يعود بالسجلات التي لا توجد لديها نفس القيم في الحقول Id و cost و hour و type كما أنها غير مقترنة بالسجلات الأخرى.

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

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

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!