شرط في تعليمة sql
#1
السلام عليكم ورحمة الله بركاته

بفرض لدي جدول storage (مستودع) وجدول m للمواد
ما هي تعليمة SQL التي تعطي اسماء المستودعات التي تحوي بداخلها المادة m1 و m2 و m3 ...
أي أن المستودع الواحد يحوي هذه المواد الثلاثة
الرد
#2
عليكم السلام و رحمة الله
أنظر هذا أخي
كود :
SELECT name_storage,name_m,code_sto
FROM storage,m
WHERE name_storage IN('m1','m2','m3')and storage.code_sto=m.code_sto
لم اجربه بعد
الرد
#3
شكرا أخي pixa144 جربت الكود لكنه لم ينجح
أنا كتبت الكود التالي:

كود :
select  * from storage
where id in (select id from m where name in ('m1','m2','m3'))
لكن هذا الكود يعيد كل المستودعات التي يوجد فيها أحد المواد المذكورة والصحيح ان تعيد كل المستودعات التي تحوي كل المواد المذكورة
الرد
#4
السلام عليكم

جرب كالمثال التالي :
كود :
select * from customers
where ( select count(*) from customers  where customerid in ('Val1','Val2'))>=2  and customerid in ('Val1','Val2')
في حالتك عدد السجلات يجب أن يساوي 3

بالتوفيق
الرد
#5
السلام عليكم
شكرا لك اخي لكن المثال الذي طرحته انت لو قسته على مثال المستودعات يفترض وجود المادة الواحدة في مستودع واحد اما ما اتعامل معه انا فيمكن ان تكون المادة موجودة في اكثر من مستودع مع مواد اخرى

قمت بتعديل الكود السابق من اجل البحث فقط ولم اجد الحل بعد للمشكلة الرئيسية
كود :
select  * from storage
where id in (select id from m where
(name like '%m1%' or name like '%m2%' or name like '%m3%'))
الرد
#6
و عليكم السلام و رحمة الله

لماذا حورت الإستعلام ؟

كود :
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

+ لا تنسى الربط الداخلي في حالتك

بالتوفيق
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم