LEFT JOIN жана жетишпеген маалымат
Бир таблицанын ар бир сабын, түгөйү жок болсо да, сактап калабыз
INNER JOIN эки таблицада тең дал келүүсү бар саптарды гана көрсөтөт. Ал эми LEFT JOIN биринчи (сол) таблицанын ар бир сабын сактайт, ал эми дал келүү жок жерде калган мамычаларды жөн гана NULL менен толтурат. Бул кимиси же эмнеси жетишпей жатканын көрүүгө мүмкүндүк берет.
LEFT JOINмененINNER JOINкандай айырмаланарын түшүндүрүү,- сабында түгөйү жок болгондо пайда болгон
NULLмаанилерин окуу, RIGHT JOINколдонуу жана анынLEFT JOINдин күзгүсү экенин билүү,LEFT JOIN ... IS NULLыкмасы менен дал келүүсү жок саптарды табуу.
1. Кыска эскертүү: INNER JOIN
Өткөн сабакта сиз INNER JOIN менен таанышкансыз. Ал эки таблицаны дал келген мамыча боюнча жабыштырат жана дал келүү эки жактан тең болгондо гана сапты сактайт. Эгер окуучунун бир да китеби жок болсо, окуучу жыйынтыктан жоголот. Бул дал келген түгөйлөр гана керек болгондо жакшы, бирок кээде так ошол жоголгон саптар бизди кызыктырат.
Мугалимди элестетиңиз: ага бардык окуучулардын тизмеси, алардын жанында алган китептери менен керек. Кээ бир окуучулар али эч нерсе албаган, бирок мугалим алардын аттарын тизмеде көргүсү келет. INNER JOIN ошол окуучуларды үнсүз алып салмак. Ал эми LEFT JOIN аларды сактап калат.
2. Мисалыбыз: кичинекей мектеп китепканасы
Биз сабак бою эки кичинекей таблицаны колдонобуз. students (окуучулар) таблицасы жана loans таблицасы (окуучу алган ар бир китепке бир сап).
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50),
grade INT
);
CREATE TABLE loans (
loan_id INT PRIMARY KEY,
student_id INT,
book VARCHAR(50)
);
INSERT INTO students VALUES
(1, 'Amina', 7),
(2, 'Ben', 7),
(3, 'Chloe', 8),
(4, 'Diego', 8),
(5, 'Emma', 7);
INSERT INTO loans VALUES
(101, 1, 'Treasure Island'),
(102, 1, 'Matilda'),
(103, 3, 'The Hobbit'),
(104, 4, 'Holes');
Ар бир таблица эмнени сактаарын мына бул. Көңүл буруңуз: Ben жана Emma бир да китеп алышкан эмес, ошондуктан loans тагы бир да сап алардын student_id син (2 же 5) эскербейт.
students
| student_id | name | grade |
|---|---|---|
| 1 | Amina | 7 |
| 2 | Ben | 7 |
| 3 | Chloe | 8 |
| 4 | Diego | 8 |
| 5 | Emma | 7 |
loans
| loan_id | student_id | book |
|---|---|---|
| 101 | 1 | Treasure Island |
| 102 | 1 | Matilda |
| 103 | 3 | The Hobbit |
| 104 | 4 | Holes |