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

السؤال

نشر (معدل)

سلام عليكم

الاستعلام كالتالي

SELECT
order_buttons.*,
       order_buttons.id AS mainID,
       button.image ,
       button.name,
       patron_colors.color_name AS color_name,
       patron_colors.id,
       patron_colors.order_id,
       patron_colors.color_count
FROM order_buttons

    JOIN button 
      
ON order_buttons.button_id = button.id
  
JOIN patron_colors ON
    
(patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select) AND patron_colors.order_id=' .$order['id']. ' 

WHERE order_buttons.order_id=' .$order['id']. ' 

في ال join ده

JOIN patron_colors ON
    
(patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select) AND patron_colors.order_id=' .$order['id']. ' 

عاوز طريقة اقوله بيها نفذلي الاستعلام ده ، لو لقيت قيمة patron_colors.order_id اكبر من صفر نفذ شرط ال AND

يعني يتجاهل من بعد تعليمة AND و يعملي ال JOIN من غيرها عادي

بمعنى تاني اوضح ، عاوز اربط الشرط ده في ال JOIN

AND patron_colors.order_id=' .$order['id']. ' 

فقط في حال قيمة الحقل patron_colors.order_id اكبر من 0 غير كده ينفذ ال JOIN و لا كأنها موجودة

تم التعديل في بواسطة محمد المصري

Recommended Posts

  • 0
نشر

أعتقد من الشيفرة البرمجية لديك أن المتغيّر $order['id'] هو من الشيفرة وليس ضمن الاستعلام، لذلك يمكنك تبسيط الأمر بإجراء هذا الاختبار على مستوى التطبيق بما أن قيمة المتغيّر موجودة مسبقاً لديك وبالتالي تنفيذ أحد الاستعلامين بشكل منفصل حسب قيمة المتغيّر.

أو يمكنك إجراء نفس الشروط IF  ضمن استعلام Mysql التي ستجريها ضمن الشيفرة البرمجية ولكن ذلك سيزيد من تعقيد الاستعلام وخاصةً أنه في حالتك يتم التجميع بين عدد من الجداول.

حيث يمكن استخدام الشروط IF ضمن الاستعلامات بالشكل التالي:

IF(fd.condition = 1, 'Y', 'N') 

(في حال تحقق الشرط = 1 سيتم أخذ القيمة "Y" وإلا سيتم أخذ القيمة "N").

مثال على مشروعك:

IF(patron_colors.order_id > 0 , patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select AND patron_colors.order_id=' .$order['id'] , patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select)

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...