السلام عليكم ورحمة الله بركاته
بفرض لدي جدول storage (مستودع) وجدول m للمواد
ما هي تعليمة SQL التي تعطي اسماء المستودعات التي تحوي بداخلها المادة m1 و m2 و m3 ...
أي أن المستودع الواحد يحوي هذه المواد الثلاثة
شكرا أخي pixa144 جربت الكود لكنه لم ينجح
أنا كتبت الكود التالي:
كود :
select * from storage
where id in (select id from m where name in ('m1','m2','m3'))
لكن هذا الكود يعيد كل المستودعات التي يوجد فيها أحد المواد المذكورة والصحيح ان تعيد كل المستودعات التي تحوي كل المواد المذكورة
السلام عليكم
جرب كالمثال التالي :
كود :
select * from customers
where ( select count(*) from customers where customerid in ('Val1','Val2'))>=2 and customerid in ('Val1','Val2')
في حالتك عدد السجلات يجب أن يساوي 3
بالتوفيق
السلام عليكم
شكرا لك اخي لكن المثال الذي طرحته انت لو قسته على مثال المستودعات يفترض وجود المادة الواحدة في مستودع واحد اما ما اتعامل معه انا فيمكن ان تكون المادة موجودة في اكثر من مستودع مع مواد اخرى
قمت بتعديل الكود السابق من اجل البحث فقط ولم اجد الحل بعد للمشكلة الرئيسية
كود :
select * from storage
where id in (select id from m where
(name like '%m1%' or name like '%m2%' or name like '%m3%'))
و عليكم السلام و رحمة الله
لماذا حورت الإستعلام ؟
كود :
select * from customers
where ( select count(*) from customers
where customerid in ('Val1','Val2'))>=2 and customerid in ('Val1','Val2')
لاحظ جيدا الإستعلام
نقوم بإختيار الزبائن إذا وجدت القيمتين Val1 . Val2 للـ customerid
إذا وجدت قيمة واحدة فقط الإستعلام لايرجع شيئ وفقا للشرط الأول select count(*) ...>=2
+ لا تنسى الربط الداخلي في حالتك
بالتوفيق