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

السؤال

نشر

حين تنفيذ هذا الإستعلام 

SELECT
    order_id,
    thread_id,
    color_select
FROM
    order_threads
WHERE
    order_id = 42

تظهر النتيجة كالتالي

1.jpg.6c825e44d76820706bb8f331e7ece9e4.jpg

إلى الان مفيش مشكلة 

الان اريد ربط بعض الجداول ببعضها لجلب بعض البيانات و المفتاح الرئيسي هو حقل

اقتباس

color_select

و الذي يحتوي على اسماء الألوان 

و مطلوب عمل علاقة بينه و بين جدول إسمه patron_colors يحتوي على حقل اسمه color_name من المفترض انه يحتوي على نفس الداتا الموجودة في حقل color_select بجدول order_threads

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

SELECT
    order_threads.thread_id,
    order_threads.order_id,
    order_threads.color_select,
    thread.name,
    patron_colors.color_name AS color_name,
    patron_colors.id,
    patron_colors.color_count
FROM
    order_threads
JOIN thread ON order_threads.thread_id = thread.id
LEFT OUTER JOIN patron_colors ON patron_colors.color_name = order_threads.color_select
WHERE
    order_threads.order_id = '42';

و النتيجة كانت كالتالي

2.jpg.107f1d6a2a2b07cdf54cf52fc552ce33.jpg

مع العلم ان الداتا في الحقلين دول واحدة بالحرف 

3.jpg.c9a5d3b56507b226dcb89343f395660e.jpg

Recommended Posts

  • 0
نشر

إن علاقة الربط LEFT OUTER JOIN تجلب البيانات من طرف العلاقة الأيسر

هل يمكنك عمل الاستعلام التالي للتأكد من جلبه للبيانات

SELECT
    order_threads.thread_id,
    order_threads.order_id,
    order_threads.color_select,
    patron_colors.color_name AS color_name,
    patron_colors.id,
    patron_colors.color_count
    
FROM
    order_threads JOIN patron_colors 
    
ON patron_colors.color_name = order_threads.color_select patron_colors

 

  • 0
نشر

شكرا لك اخي الفاضل

اصبح الاستعلام هكذا

SELECT
    order_threads.thread_id,
    order_threads.order_id,
    order_threads.color_select,
    
    patron_colors.color_name AS color_name,
    patron_colors.id,
    patron_colors.color_count
FROM
    order_threads

 JOIN patron_colors ON patron_colors.color_name = order_threads.color_select
WHERE
    order_threads.order_id = '42';

 

لكن لا يرجع اي نتائج 

MySQL returned an empty result set (i.e. zero rows).

 

  • 0
نشر
بتاريخ الآن قال محمد المصري5:

شكرا لك اخي الفاضل

الاستعلام السابق الذي أضفته أنا، يقوم بربط الجدولين فقط من خلال اسم اللون للتأكد من أن الشرط محقق و يمكن استخدامه في الاستعلام الرئيسي، أي هل الربط التالي يعيد نتيجة

patron_colors.color_name = order_threads.color_select

تأكد من نمط البيانات في كلا العمودين يجب أن يكون نفسه، هذا يمكننا من التأكد من صحة الربط و القيم بين العمودين

  • 0
نشر

انا اكتشفت المشكلة و هي فعلا غريبة جدا يا استاذ وائل
الاستعلام لا ينفذ لانه في الجدول ده مثلا ( اصفر)
في التاني (اصفر+مسافة)
طبعا انا هعالجها ان شاء الله في الباك اند بس السؤال الان 
ازاي اخليه يتجاهل المسافه (space) عشان يطلع ناتج الاستعلام صح ، لان الداتا ضخمة جدا و صعب تعديلها كل وحدة على حدة

  • 1
نشر
بتاريخ منذ ساعة مضت قال محمد المصري5:

ازاي اخليه يتجاهل المسافه (space) عشان يطلع ناتج الاستعلام صح ، لان الداتا ضخمة جدا و صعب تعديلها كل وحدة على حدة

  • يمكنك عمل سكربت PHP يقرأ البيانات سطر سطر حسب id ضمن حلقة، و يجلب القيم ثم يعمل لها trim أي يحذف الفراغات الزائدة أي يعمل update لها
  • وتأكد من عمل trim أيضاً عند حشر أي نوع بيانات لجداول قاعدة البيانات لتجاهل المشكلة.
  • يمكن تطبيق trim خلال الشطر أيضاً  لكنه يقلل الأداء أنه لا داع له لأنها سوف تتنفذ بشكل مكرر


TRIM(patron_colors.color_name) = TRIM(order_threads.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...