Мазмунга өтүү

LEFT JOIN жана жетишпеген маалымат

Программалоо SQL Татаалдыгы 1/5

Сабактын башталышы

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_idnamegrade
1Amina7
2Ben7
3Chloe8
4Diego8
5Emma7

loans

loan_idstudent_idbook
1011Treasure Island
1021Matilda
1033The Hobbit
1044Holes

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө