Мурунку темада биз маалыматтарды тегиздөө аркылуу жөнөкөй тандоону колдонуу менен таблицаларды кыйыр түрдө бириктирүүнү карадык. Бирок, эреже катары, ар кандай таблицалардагы маалыматтарды кошуунун кеңири таралган ыкмасы JOIN операторун колдонуу болуп саналат . INNER JOIN операторун колдонуунун жалпы формалдуу синтаксиси:
SELECT
столбцы
FROM
таблица1
[
INNER
]
JOIN
таблица2
ON
условие1
[[
INNER
]
JOIN
таблица3
ON
условие2]
@A@
JOIN операторунан кийин тандоого маалыматтарды кошуу керек болгон экинчи таблицанын аты келет. Кошумча INNER ачкыч сөзү JOINдин алдында колдонулушу мүмкүн . Анын бар же жок болушу эч нерсеге таасирин тийгизбейт. Андан кийин туташуу шарты ON ачкыч сөзүнөн кийин көрсөтүлөт . Бул шарт эки таблица кандайча салыштырыла турганын белгилейт. Көпчүлүк учурларда, кошулуу негизги таблицанын негизги ачкычын жана көз каранды таблицанын тышкы ачкычын колдонот.
Мурунку темадагы маалыматтар менен таблицаларды алалы:
CREATE
TABLE
Products
(
Id
INT
AUTO_INCREMENT
PRIMARY
KEY
,
ProductName
VARCHAR
(30)
NOT
NULL
,
Manufacturer
VARCHAR
(20)
NOT
NULL
,
ProductCount
INT
DEFAULT
0,
Price
DECIMAL
NOT
NULL
);
CREATE
TABLE
Customers
(
Id
INT
AUTO_INCREMENT
PRIMARY
KEY
,
FirstName
VARCHAR
(30)
NOT
NULL
);
CREATE
TABLE
Orders
(
Id
INT
AUTO_INCREMENT
PRIMARY
KEY
,
ProductId
INT
NOT
NULL
,
CustomerId
INT
NOT
NULL
,
CreatedAt
DATE
NOT
NULL
,
ProductCount
INT
DEFAULT
1,
Price
DECIMAL
NOT
NULL
,
FOREIGN
KEY
(ProductId)
REFERENCES
Products(Id)
ON
DELETE
CASCADE
,
FOREIGN
KEY
(CustomerId)
REFERENCES
Customers(Id)
ON
DELETE
CASCADE
);
@A@
JOIN колдонуу менен, бардык буйруктарды тандап, аларга продукт маалымат кошуу:
SELECT
Orders.CreatedAt, Orders.ProductCount, Products.ProductName
FROM
Orders
JOIN
Products
ON
Products.Id = Orders.ProductId;
@A@
Таблицалар бирдей аталыштагы тилкелерди камтышы мүмкүн болгондуктан, тандоо үчүн тилкелерди көрсөтүүдө, алардын толук атын таблица аты менен бирге көрсөтүңүз, мисалы, "Orders.ProductCount".
Таблица лакап аттарын колдонуу менен сиз кодуңузду кыскарта аласыз:
SELECT
O.CreatedAt, O.ProductCount, P.ProductName
FROM
Orders
AS
O
JOIN
Products
AS
P
ON
P.Id = O.ProductId;
@A@
Ошондой эле бир эле учурда бир нече таблицадагы маалыматтарды бириктире аласыз. Мисалы, заказга Кардарлар таблицасынан кардар тууралуу маалыматты кошолу:
SELECT
Orders.CreatedAt, Customers.FirstName, Products.ProductName
FROM
Orders
JOIN
Products
ON
Products.Id = Orders.ProductId
JOIN
Customers
ON
Customers.Id=Orders.CustomerId;
@A@
Таблицаларга кошулуу менен биз алардын мамычаларын тандоону чыпкалоо же сорттоо үчүн колдоно алабыз:
SELECT
Orders.CreatedAt, Customers.FirstName, Products.ProductName
FROM
Orders
JOIN
Products
ON
Products.Id = Orders.ProductId
JOIN
Customers
ON
Customers.Id=Orders.CustomerId
WHERE
Products.Price > 45000
ORDER
BY
Customers.FirstName;
@A@
ON ачкыч сөзүнөн кийинки шарттар курамында татаалыраак болушу мүмкүн:
SELECT
Orders.CreatedAt, Customers.FirstName, Products.ProductName
FROM
Orders
JOIN
Products
ON
Products.Id = Orders.ProductId
AND
Products.Manufacturer=
'Apple'
JOIN
Customers
ON
Customers.Id=Orders.CustomerId
ORDER
BY
Customers.FirstName;
@A@
Бул учурда биз Apple тарабынан өндүрүлгөн товарларга бардык заказдарды тандайбыз.
JOIN операторун колдонууда, таблицаларды бириктирүү процесси ресурсту көп талап кылаарын эске алыңыз, андыктан сиз чындыгында маалымат керек болгон таблицаларга гана кошулушуңуз керек. Таблицалар канчалык көп кошулса, ошончолук өндүрүмдүүлүк төмөндөйт.