4. Сұратуларды біріктіру


SQL тілі кестелерді біріктірудің екі әдісін ұсынады:

  • Байланыстырылушы кестелерді SELECT операторының FROM жазбасында көрсетеді. Бастапқыда кестелерді біріктіру жүреді, содан кейін WHERE жазбасында көрсетілген GROUP BY жазбасымен анықталатын агрегациялау, мәліметтерді реттеу т.с.с. шарттар алынған жиынға қолданылады.
  • SELECT операторын орындаумен алынған нәтижелік жиындар бірігуін анықтай отырып. Бұ жағдайда екі SELECT операторлары UNION , INTERSECT , EXCEPT немесе CORRESPONDING жазбаларымен біріктіріледі.

UNION-бірігу

UNION жазбасы екі сұрату нәтижесін біріктіреді:

  • Біроіктірілетін сұратулардың әрқайсысы бірдей бағандар санына ие болу керек;
  • Жұптасып біріктірілетін бағандар мәндері бірдей немесе бір мәнге келтірілетін болу керек. integer интежер типті баған мен varchar типті баған мәндерін біріктіруге болмайды;

Нәтижелік жиыннан автоматты түрде сәйкес жолдар алынып тасталады ( сурет. 4.1);

Сурет 4.1.Сәйкес жолдарды алыптастау арқылы UNION-бірігуінің орындалуы.

  • Егер жолға сұратуда қосатын қандай да бір тұрақты қосылатын болса, онда оның мәні жол идентивтілігіне әсер етеді ( сурет. 4.2).

Сурет 4.2.қолданылға өрнектің UNION- бірігуінің орындалуы.

Стандарт нәтижелік жиында жолдарды реттеуге ешқандай шектеу қоймайды. Кейбір ДҚБЖ бастапқыда бірінші сұрату нәтижесін шығарады да, содан кейін екінші сұрату нәтижесін шығарады. Oracle ДҚБЖ бірінші көрсетілген бағанның мәндерін оған индекс құрылмаған жағдайда да автоматты түрде реттейді.

Қажетті реттеу ретін көрсету үшін ORDER BY жазбасын қолданады. Сонымен қатар баған атын да, номерін де қолдануға болады ( сурет. 4.3).

Сурет 4.3. Нәтижелік жиынды реттеумен UNION- бірігуінің орындалуы.

UNION ALL жазбасы UNION жазбасындағыдай, екі ішкі сұрату біріктіруін орындайды, келесі жайттар ескерілмейді:

  • Құрылатын нәтижелік жиыннан сәйкес жолдар жойылмайды;
  • біріктірілуші сұратулар нәтижелік жиынға реттелместен тізбектеліп ұсынылады.

Екі сұратудан көп біріктірген жағдайда операцияның орындалу ретін өзгерту үшін жақшалар пайдалануға болады ( сурет. 4.4).

Сурет 4.4.Үш сұрату үшін UNION- бірігуінің орындалуы

INTERSECT-бірігуі

INTERSECT жазбасы әр біріктірілуші нәтижелік жиында бар жолдарды ғана таңдауға мүмкіндік береді. 4.5 суретте қиылысатын жиындар ретінде сұратулардың бірігу мысалы көрсетілген.

Сурет 4.5. INTERSECT-бірігуінің орындалуы

EXCEPT-бірігу

EXCEPT жазбасы бірінші біріктіруші нәтижелік жиында бар, екіншісінде жоқ жолдарды ғана таңдауға мүмкіндік береді.

INTERSECT және EXCEPT жазбалары SQL-92 толығымен сәйкестік деңгейінде ғана орындалады. Кейбір ДҚБЖ EXCEPT жазбасының орнына MINUS опциясын алады ( сурет. 4.6).

Сурет 4.6. MINUS(EXCEPT)-біріктірілудің орындалуы

EXCEPT- біріктіруді орындаған жағдайда сұратуларды біріктірудің басқа түрлері үшін де сәйкес жолдар нәтижелік жиынға қосылмайды, көрсетілген суретте жақсы байқалады.

Егер INTERSECT ALL немесе EXCEPT ALL жазбалары қолданса, онда жиындар қиылысында немесе жиындарды азайтуда қайталанушы жол нәтижелік жиыннан, біріктірілуші нәтижелік жиындарда неше рет қайталанса, сонша рет аллынып тасталады. то при пересечении множеств или вычитании множеств повторяемая строка удаляется

CORRESPONDING BY жазбасы біріктірілуші жиындарда ьүрлі бағандар санын қолдануға мүмкіндік береді: нәтижелік жиынға тізімді көрсетілген бағандар ғана қосылады. Бұл тізім сонымен бірге нәтижелік жиынға бағандардың қосылу ретін анықтайды.