Inayotumiwa kwa JOIN ya SQL

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

Join 和 Key

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

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

请看 "Persons" 表:

Id_P Muafaka wa matokeo: LastName Address City
1 22456 Adams Oxford Street London
2 Bush George Fifth Avenue New York
3 77895 Carter Changan Street Beijing

请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。

接下来请看 "Orders" 表:

Id_O FirstName Id_P
1 24562 3
2 Thomas 3
3 OrderNo 1
4 John 1
5 34764 65

请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。

Tunafikia kwamba "Id_P" inahusisha tabia mbili ya juu.

Tunafikia kwamba "Id_P" inahusisha tabia mbili ya juu.

Kueleza tabia mbili

Tunaweza kutumia tabia mbili kwa kufikia data kutoka kwenye tabia mbili:

Kama tunataka kuonyesha matokeo wa kila mtu wa mabaki, tunaweza kutumia uamuzi wa SELECT hapa chini:
Nani anasifa bidii, na wapi wanaenda?
FROM Persons, Orders 

ORDER BY Persons.LastName

Muafaka wa matokeo: LastName FirstName
22456 Adams OrderNo
22456 Adams John
77895 Carter 24562
77895 Carter Thomas

WHERE Persons.Id_P = Orders.Id_P

SQL JOIN - kutumia Join

Inaonekana kwamba tunaweza kutumia neno la kwanza JOIN kuwaonyesha data kutoka kwenye tabia mbili.

Kama tunataka kuonyesha matokeo wa kila mtu wa mabaki, tunaweza kutumia uamuzi wa SELECT hapa chini:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P

ORDER BY Persons.LastName

Muafaka wa matokeo: LastName FirstName
22456 Adams OrderNo
22456 Adams John
77895 Carter 24562
77895 Carter Thomas

44678

Aina mbalimbali za SQL JOIN

Hapa inavyoonyeshwa aina za JOIN zingine za kufikia, na muungano wao.

  • JOIN: Inatoa muafaka inayotokana na ukingaji wa ukindisi wa ukindisi
  • LEFT JOIN: Inatoa muafaka zote kutoka kwenye tabia ya kimaana, bila ya kufikiria tabia ya kati yao
  • RIGHT JOIN: Inatoa muafaka zote kutoka kwenye tabia ya kimaana, bila ya kufikiria tabia ya kati yao
  • FULL JOIN: Inatoa muafaka inayotokana na tabia moja ya kati yao