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

هل يمكن الجمع بين INNER JOIN و UNION في استعلام واحد في mysql

علي الكاسر

السؤال

حاولت مرارا وتكرارا عمل هذا الاستعلام ولكن فشل في كل مره عن الرجوع باي بيانات. 

SELECT * FROM messages me INNER JOIN user us ON me.msg_id_user_1 = us.id UNION  SELECT * FROM messages2 me2 INNER JOIN user us ON me.msg_id_user_1 = us.id 
       

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

Recommended Posts

  • 0

نعم، من الممكن دمج عملية INNER JOIN و UNION في استعلام واحد في MySQL. عامل UNION يستخدم لدمج نتائج استعلامات SELECT متعددة في مجموعة نتائج واحدة، بينما عامل INNER JOIN يستخدم لدمج صفوف من جداول متعددة على أساس عمود متعلق بينها.

هنا مثال على دمج عملية INNER JOIN و UNION في استعلام واحد:

 

SELECT * FROM table1
INNER JOIN table2
ON table1.column = table2.column
UNION
SELECT * FROM table3
INNER JOIN table4
ON table3.column = table4.column;

 

هذا الاستعلام يدمج نتائج عمليتي INNER JOIN في مجموعة نتائج واحدة باستخدام عامل UNION. الإطار الأول من SELECT يؤدي عملية INNER JOIN بين الجدول 1 و الجدول 2، بينما الإطار الثاني من SELECT يؤدي عملية INNER JOIN بين الجدول 3 و الجدول 4. عامل UNION يدمج نتائج هذين الإطارين من SELECT في مجموعة نتائج واحدة.

وايضا يمكنك توضيح قاعده بياناتك لاتمكن من المساعده بشكل افضل.

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

  • 0
بتاريخ 9 ساعة قال Muhammed Nasser:

عملية INNER JOIN و UNION في استعلام واحد في MySQL. عامل UNION يستخدم لدمج نتائج استعلامات SELECT متعددة في مجموعة نتائج واحدة، بينما عامل INNER JOIN يستخدم لدمج صفوف من جداول متعددة على أساس عمود متعلق بينها.

هنا مثال على دمج عملية INNER JOIN و UNION في استعلام واحد:

 

SELECT * FROM table1
INNER JOIN table2
ON table1.column = table2.column
UNION
SELECT * FROM table3
INNER JOIN table4
ON table3.column = table4.column;

 

هذا الاستعلام يدمج نتائج عمليتي INNER JOIN في مجموعة نتائج واحدة باستخدام عامل UNION. الإطار الأول من SELECT يؤدي عملية INNER JOIN بين الجدول 1 و الجدول 2، بينما الإطار الثاني من SELECT يؤدي عملية INNER JOIN

نجحت في الربط ولكن فشلت في جعل الجدول يعيد الناتج المطلوب. 

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

لدي ثلاثه جداول الاول جدول المستخدمين user وجدول الرسائل messages وجدول لخذين عمليات حذف الرسائل العامة public_messages_delete 

في جدول الرسائل لدي عمود type لتخزين نوع الرساله اذا كانت عامه 1 واذا كانت خاصه 0 . 

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

هذا الاستعلام الثاني 

SELECT msg_message,name FROM messages INNER JOIN user ON messages.msg_id_user_1=user.id INNER JOIN public_messages_delete ON messages.msg_id != public_messages_delete.pmd_id_msg WHERE  type=1"

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...