البرمجة

استعلام MySQL لاسترجاع السجلات بفلاتر متعددة

للحصول على السجلات التي تحتوي على الفلترات المحددة، يمكنك استخدام العبارة التالية في MySQL:

sql
SELECT p.id, p.productname FROM products p JOIN assignedproductfilter apf ON p.id = apf.productid WHERE apf.filterid IN (56, 50, 34) GROUP BY p.id, p.productname HAVING COUNT(DISTINCT apf.filterid) = 3;

هذا الاستعلام يقوم بتحديد السجلات من الجدول “products” التي تحتوي على جميع الفلاتر المحددة (56، 50، 34). يتم ذلك عن طريق الانضمام إلى الجدول “assignedproductfilter” باستخدام عبارة JOIN، والتي تربط بين السجلات في الجدولين استنادًا إلى مطابقة قيمة “productid”. ثم يتم تحديد الفلاتر المحددة باستخدام العبارة WHERE، وتستخدم عبارة GROUP BY لتجميع السجلات بناءً على “id” و “productname”، ثم يتم استخدام العبارة HAVING للتأكد من أن عدد الفلاتر المختلفة المرتبطة بالمنتج يساوي عددها المحدد (في هذه الحالة 3).

إذا كنت بحاجة إلى مزيد من التوضيح أو لديك أي أسئلة، فلا تتردد في طرحها.

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

بالطبع! الاستعلام الذي تم توضيحه يعتمد على استخدام العبارة JOIN للانضمام بين الجدولين “products” و “assignedproductfilter” باستخدام العبارة ON لتحديد الصلة بينهما عن طريق الحقل “productid”.

بعد ذلك، يتم استخدام العبارة WHERE لتحديد السجلات التي تحتوي على الفلاتر المطلوبة، وهي الفلاتر بقيم 56 و 50 و 34 في هذه الحالة.

ثم يتم استخدام العبارة GROUP BY لتجميع السجلات بناءً على حقل “id” و “productname” من الجدول “products”.

أخيرًا، يتم استخدام العبارة HAVING COUNT(DISTINCT apf.filterid) = 3 للتأكد من أن السجل يحتوي على جميع الفلاتر المحددة، حيث يتم فرز السجلات التي تحتوي على 3 قيم مختلفة لـ “filterid”، أي الفلاتر المحددة.

إذا كانت هناك أي استفسارات إضافية، فأنا هنا للمساعدة.

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