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

السؤال

نشر

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

SELECT
order_threads.*,
       thread.image ,
       thread.name,
       patron.id AS patronID,
       patron.order_id AS patronOrderID,
       patron_colors.patron_id AS patron_colors_Patron_id ,
       patron_colors.color_name AS patron_colors_color_name,
       patron_colors.id AS patron_colors_ID,
       patron_colors.color_count AS patron_colors_colorCount

FROM order_threads

    JOIN thread 
      
ON order_threads.thread_id = thread.id

JOIN patron_colors ON patron_colors.patron_id = order_threads.color_select OR patron_colors.color_name = order_threads.color_select

LEFT JOIN patron ON patron.id = patron_colors.patron_id 

WHERE patron.order_id = order_threads.order_id AND  order_threads.order_id='36';

و الناتج كما في الصورة

لاحظ ID رقم 72 مكرر مرتين

و 73 ايضا

1.thumb.jpg.52e622999420cf8d6cfad2065c696a94.jpg

 

مع العلم اني لما بستعلم من جدول واحد بدون بناء علاقات مع جداول اخرى الناتج بيطلع مضبوط

2.thumb.jpg.c69139c6b554a010ac8f6c36bc72e962.jpg

Recommended Posts

  • 1
نشر

تم جلب الفاتورة مرتين لأن علاقة الربط JOIN تقوم بجلب جميع الثنائيات التي تحقق علاقة الربط.

إذاً لديك تكرار في الجدول الذي يمثل الجزء الأيمن من علاقة الربط.

  • ملاحظة: ترتيب ذكر الجداول في علاقة الدمج مهم

يمكن حل المشكلة بإضافة select distinct لمنع تكرار النتائج المتطابقة

  • 1
نشر (معدل)

تلك المشكلة تحدث بسبب علاقة الجوين كما أوضح أ.وائل ويمكنك حلها أيضًا عبر إستخدام group by لحقل يُمثل السجل مثل ال id لتكون في النهاية الجملة الإستعلامية الخاصة بك كالتالي 

SELECT
order_threads.*,
       thread.image ,
       thread.name,
       patron.id AS patronID,
       patron.order_id AS patronOrderID,
       patron_colors.patron_id AS patron_colors_Patron_id ,
       patron_colors.color_name AS patron_colors_color_name,
       patron_colors.id AS patron_colors_ID,
       patron_colors.color_count AS patron_colors_colorCount

FROM order_threads

    JOIN thread 
      
ON order_threads.thread_id = thread.id

JOIN patron_colors ON patron_colors.patron_id = order_threads.color_select OR patron_colors.color_name = order_threads.color_select

LEFT JOIN patron ON patron.id = patron_colors.patron_id 

WHERE patron.order_id = order_threads.order_id AND  order_threads.order_id='36';
group by id

 

تم التعديل في بواسطة شرف الدين2
تحسين الاجابة

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...