PHP SQL: مطابقة البيانات المقابلة بين جدولين ، دون تصفية البيانات في الجدول الأول
-
03-10-2019 - |
سؤال
لدي طاولتان. للحصول على البساطة ، تحتوي الأعمدة التالية على الأعمدة التالية
معرف المستخدم
تقسيم
'D' لديه ما يلي:
تقسيم
اسم
لم أقم بإنشاء هذا الجدول ، وإلا فلن أواجه هذه المشكلة. U.Division يستطيع كن فارغا. D.Division لا تستطيع.
يقوم تشغيل ما يلي بإنشاء البيانات المناسبة ، ولكنه يقوم أيضًا بتصفية كل معرف مستخدم واحد يحتوي على DivisionId. هل لا يزال هناك أي على أي حال لإظهار جميع المستخدمين بغض النظر عن قسمه وإذا لم يكن القسم الفارغ ، فإنه يعرض اسم القسم؟
"حدد userid ، d.name
منك ، د
حيث U.DivisionId = D.DivisionId
طلب بواسطة userId "
المحلول
استخدم انضمام خارجي:
SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON u.divisionid = d.divisionid
ORDER BY userid
نصائح أخرى
استخدام بناء الجملة oracle أو ضمني ضمني يعني INNER JOIN
. يزيل الانضمام الداخلي السجلات التي لا تفي بالمعايير.
انضمام صريح باستخدام JOIN
يتيح لك البند تحديد نوع Join.
أ LEFT OUTER JOIN
يحتفظ بجميع الصفوف في الجدول الأول ، بغض النظر عما إذا كانت هناك صفوف مطابقة في الجدول الثاني.
SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON d.divisionid = u.divisionid
ORDER BY userid