اذهب إلى المحتوى
  • 0

استعمال المعاملات المنطقية AND, OR, NOT ضمن جملة شرطية PHP / SQL

Flutter Dev

السؤال

اقوم بجلب بيانات جدول كالتالي:

$sql = "SELECT * FROM topic 
LEFT JOIN Table1 ON topic.id = Table1.IdTable1
WHERE state = 1 AND State = 0  AND name Like ? OR Table1.IdTable1 Like ? ";

انا اجلب بيانات الجدول الأول الذي اسمه Topic  واقوم بجلب بيانات الجدول الذي اسمه Table1 مع وجود شرط ان يكون state  يساوي 0

حسنا الان انا أحاول جلب البيانات بشرط من الاثنين اما من خلال name  او من خلال  IdTable1 

المشكلة كالتالي : لو قمت بجلب البيانات من خلال حقل name  هنا سوف يعمل شرط state  أيضا بحيث سوف يجلب البيانات التي تحتوي على قيمة 0 state   

ولكن لو قمت بجلب البيانات من خلال Table1.IdTable1 رح تحدث مشكلة وهيا ان state  لن يعمل وسوف يجلب جميع البيانات سوى كان state  يحمل قيمة 1 او 2 او 3 

كيف يمكن حل هذا المشكلة بحيث ان state  يجب ان يعمل في كل الحالتين هل توجد طريقة لفعل ذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ الآن قال مروان مروان3:

هنا تكملن المشكلة انا احتاج ان ياخذ state 0 مثل استعلام name والذي هو قبل الجمله OR 

تمام، نعمل and بين أول شرط state = 0 مع الجزء الآخر للجملة، لكن لن تعمل state = 1 لأنها للتو قيمتها 0

WHERE state = 0 AND ( name Like ?  OR  Table1.IdTable1 Like ? )";

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

فهمت أنك تريد جلب البيانات في حال state = 1 ثم شرط آخر هو state 0 مع اسم معين أو id ميعن..

جرب التالي:

WHERE state = 1 OR ( State = 0  AND name Like ? ) OR (Table1.IdTable1 Like ? )";

أو

WHERE state = 0 OR ( State = 1  AND name Like ? ) OR (Table1.IdTable1 Like ? )";
      ^^^^^^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^^^^^^^^^^^^^^

وضع أقواس لكل مجموعة شروط مرتبطة بينهم OR هو حل مشكلتك.

AND لها أولوية (يتم تقييم طرفيها ثم استبدالها بقيمة منطقية) ثم ننتقل ل AND الثانية .. ثم يتم تجميع الشرط كاملاً  بعبارات OR

في حال الاستعلام خطأ، عليك وضع توضيح للشروط التي تستعملها لأنه غير مفهوم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال Wael Aljamal:

فهمت أنك تريد جلب البيانات في حال state = 1 ثم شرط آخر هو state 0 مع اسم معين أو id ميعن..

جرب التالي:


WHERE state = 1 OR ( State = 0  AND name Like ? ) OR (Table1.IdTable1 Like ? )";

أو


WHERE state = 0 OR ( State = 1  AND name Like ? ) OR (Table1.IdTable1 Like ? )";
      ^^^^^^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^^^^^^^^^^^^^^

وضع أقواس لكل مجموعة شروط مرتبطة بينهم OR هو حل مشكلتك.

AND لها أولوية (يتم تقييم طرفيها ثم استبدالها بقيمة منطقية) ثم ننتقل ل AND الثانية .. ثم يتم تجميع الشرط كاملاً  بعبارات OR

في حال الاستعلام خطأ، عليك وضع توضيح للشروط التي تستعملها لأنه غير مفهوم.

اهلا اخي الكريم لا انا احاول اجلب البيانات من خلال استعلام نوعين يعني ممكن للمستخدم يعمل استعلام من خلال ID او من خلال name ولكن في كل الحالتين احتاج ان يكون البيانات المرجعه ماخذه حقل state في حالة 0 

 

 

الان هو استعلام name ياخذ حالة 0 ولكن حقل ID لا ياخذ

بمعنى ان الاستعلام الذي صار بعد جمله OR لا يتاثر بما قبله وهو state =0 

 

هنا تكملن المشكلة انا احتاج ان ياخذ state 0 مثل استعلام name والذي هو قبل الجمله OR 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...