Tsari SQL JOIN

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

Join 和 Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

Kwai, kai kiyayi "Persons" tabbin:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Rantce, "Id_P" tsaɗin tsa tabbin "Persons" kifin. Ana fahimta ta hanyar haka, kuma ba za a iya samun tabbin dabbobi na Id_P wanda yake da kimanin yawan mutum.

Kwai, kai kiyayi "Orders" tabbin:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Rantce, "Id_O" tsaɗin tsa tabbin "Orders" kifin, kuma, "Orders" tabbin "Id_P" tsaɗin yana amfaniwa don nuna "Persons" tabbin mutum, kuma yana samun sunan mutumin da yake.

يرجى ملاحظة أن "Id_P" يربط بين الجداول السابقتين.

مرجع جداول

يمكننا الحصول على بيانات من جداولين من خلال مرجع الجداول.

من الذي قام بشراء المنتجات وما الذي قام بشراءه؟

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

النتائج المتراكمة:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - استخدام Join

بالإضافة إلى الطريقة السابقة، يمكننا أيضًا استخدام كلمة المفتاح JOIN للحصول على بيانات من جداولين.

إذا كنا نريد إدراج جميع الطلبات للجميع، يمكننا استخدام جملة SELECT التالية:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

النتائج المتراكمة:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

أنواع مختلفة من SQL JOIN

بالإضافة إلى INNER JOIN (الربط الداخلي) الذي استخدمناه في الأمثلة السابقة، يمكننا أيضًا استخدام أنواع أخرى من الربط.

فيما يلي قائمة بجميع أنواع JOIN التي يمكنك استخدامها، وكيف يختلفون عن بعضهم البعض.

  • JOIN: إذا كان هناك تطابق على الأقل في الجدول، يتم العودة إلى الصفوف
  • LEFT JOIN: حتى لو لم يكن هناك تطابق في الجدول الأيمن، يتم العودة إلى جميع الصفوف في الجدول الأيسر
  • RIGHT JOIN: حتى لو لم يكن هناك تطابق في الجدول الأيسر، يتم العودة إلى جميع الصفوف في الجدول الأيمن
  • FULL JOIN: إذا كانت هناك تطابق في أي من الجداول، يتم العودة إلى الصفوف