logo

Įdėtos užklausos SQL

Būtinos sąlygos: SQL pagrindai

Įdėtos užklausos yra būdas atlikti sudėtingas užklausas įterpiant vieną užklausą į kitą. Išorinė užklausa gali taikyti kai kurias sąlygas vidinės užklausos rezultatams. Leiskite mums naudoti STUDENT, COURSE, STUDENT_COURSE lentelės, skirtos įdėtoms užklausoms suprasti.

STUDENTAS



S_ID S_NAME S_ADDRESS S_PHONE S_AGE
S1 RAM DELIS 9455123451 18
S2 RAMESH GURGAONAS 9652431543 18
S3 SUJIT ROHTAK 9156253131 dvidešimt
S4 SURESH DELIS 9156768971 18

KURSAS

Java rūšiavimas masyvo sąraše
C_ID C_NAME
C1 DSA
C2 Programavimas
C3 DBVS

STUDENT_KURSAS

S_ID C_ID
S1 C1
S1 C3
S2 C1
S3 C2
S4 C2
S4 C3

Iš esmės yra dviejų tipų įdėtos užklausos:

  • Nepriklausomos įdėtos užklausos: Nepriklausomose įdėtose užklausose užklausos vykdymas prasideda nuo vidinės užklausos iki atokiausių užklausų. Vidinės užklausos vykdymas nepriklauso nuo išorinės, tačiau vidinės užklausos rezultatas naudojamas vykdant išorinę užklausą. Įvairūs operatoriai, tokie kaip IN, NOT IN, ANY, ALL ir tt, naudojami rašant nepriklausomas įdėtas užklausas.
    IN: Jei norime išsiaiškinti S_ID kurie yra užsiregistravę C_NAME „DSA“ arba „DBMS“, galime parašyti naudodami nepriklausomą įdėtą užklausą ir IN operatorių. Nuo KURSAS lentelę, galime sužinoti C_ID dėl C_NAME „DSA“ arba DBVS“, ir mes galime juos naudoti C_ID s už radimą S_ID s nuo STUDENT_KURSAS LENTELĖ. 1 ŽINGSNIS: Suradimas C_ID dėl C_NAME =„DSA“ arba „DBVS“ Pasirinkite C_ID KURSAS kur C_NAME = „DSA“ arba C_NAME = 'DBVS' 2 ŽINGSNIS: Naudojant C_ID 1 žingsnyje, kad surastumėte S_ID Pasirinkite S_ID STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID KURSAS kur C_NAME = „DSA“ arba C_NAME ='DBVS'); Vidinė užklausa pateiks rinkinį su nariais C1 ir C3, o išorinė – tuos S_ID s dėl kurių C_ID yra lygus bet kuriam aibės nariui (šiuo atveju C1 ir C3). Taigi, jis grąžins S1, S2 ir S4. Pastaba: Jei norime sužinoti vardus STUDENTAS kurie užsiregistravo „DSA“ arba „DBVS“, tai galima padaryti taip: Pasirinkite S_NAME iš STUDENTAS kur S_ID IN (pasirinkite S_ID STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID KURSAS kur C_NAME ='DSA' arba C_NAME ='DBVS'));
    NĖRA: Jei norime išsiaiškinti S_ID s iš STUDENTAS s, kurie nėra užsiregistravę nei „DSA“, nei „DBVS“, tai galima padaryti taip: Pasirinkite S_ID STUDENTAS kur S_ID NE IN (pasirinkite S_ID STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID KURSAS kur C_NAME ='DSA' arba C_NAME ='DBVS')); Vidinė užklausa pateiks rinkinį su nariais C1 ir C3. Antroji vidinė užklausa juos grąžins S_ID s dėl kurių C_ID yra lygus bet kuriam aibės nariui (šiuo atveju C1 ir C3), kurie yra S1, S2 ir S4. Tolimiausia užklausa juos grąžins S_ID s kur S_ID nėra aibės (S1, S2 ir S4) narys. Taigi jis grąžins S3.
  • Kartu susijusios įdėtos užklausos: Kartu susijusiose įdėtosiose užklausose vidinės užklausos išvestis priklauso nuo eilutės, kuri šiuo metu vykdoma išorinėje užklausoje. pvz.; Jei norime išsiaiškinti S_NAME apie STUDENTAS s, kurie yra užsiregistravę C_ID „C1“, tai galima padaryti naudojant kartu susijusią įdėtą užklausą, kaip: Pasirinkite S_NAME iš STUDENTAS S kur YRA ( pasirinkite * iš STUDENT_KURSAS SC, kur S. S_ID =SC. S_ID ir SC. C_ID ='C1'); Kiekvienai eilutei STUDENTAS S, jis suras eilutes iš STUDENT_KURSAS kur yra. S_ID = SC. S_ID ir SC. C_ID ='C1'. Jei už a S_ID STUDENTAS S, bent jau yra eilutė STUDENT_KURSAS SC su C_ID ='C1', tada vidinė užklausa pateiks teisingą ir atitinkamą S_ID bus grąžinta kaip produkcija.

PAVYZDYS SQL KODE:

PASIRINKITE Mokinio vardą

IŠ Studentų

KUR Įeina studento ID (

java atvirkštinė eilutė

PASIRINKITE Studento ID

IŠ pažymių

WHERE Tema = „Matematika“ IR balas> 90

);