Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
16.04.2013
Размер:
35.75 Кб
Скачать

Understanding SQL.Chapter 13. йурпмшъпчбойе претбфптб EXISTS феретш, лпздб чщ пчмбдемй претбфптпн EXISTS, чЩ ХЪОБЕФЕ РТЙВМЙЪЙФЕМШОП ФТЙ УРЕГЙБМШОЩИ ПРЕТБФПТБ ПТЙЕОФЙТХЕНЩИ ОБ РПДЪБРТПУЩ. (жБЛФЙЮЕУЛЙ, ЙНЕАФУС ФПМШЛП ДЧБ, ФБЛ ЛБЛ ANY Й SOME - ПДОП Й ФП ЦЕ.) еУМЙ ЧЩ РПКНЕФЕ ТБВПФХ ЬФЙИ ПРЕТБФПТПЧ, ЧЩ ВХДЕФЕ РПОЙНБФШ ЧУЕ ФЙРЩ РПДЪБРТПУПЧ РТЕДЙЛБФБ ЙУРПМШЪХЕНЩИ Ч SQL . лТПНЕ ФПЗП, ЧЩ ВХДЕФЕ РТЕДУФБЧМЕОЩ ТБЪМЙЮОЩН УРПУПВБН ЗДЕ ДБООЩК ЪБРТПУ НПЦЕФ ВЩФШ УЖПТНЙТПЧБО ЙУРПМШЪХС ТБЪМЙЮОЩЕ ФЙРЩ РПДЪБРТПУПЧ РТЕДЙЛБФБ, Й ЧЩ РПКНЕФЕ РТЕЙНХЭЕУФЧБ Й ОЕДПУФБФЛЙ ЛБЦДПЗП ЙЪ ЬФЙИ РПДИПДПЧ. ANY, ALL, Й SOME ОБРПНЙОБАФ EXISTS ЛПФПТЩК ЧПУРТЙОЙНБЕФ РПДЪБРТПУЩ ЛБЛ БТЗХНЕОФЩ; ПДОБЛП ПОЙ ПФМЙЮБАФУС ПФ EXISTS ФЕН, ЮФП ЙУРПМШЪХАФУС УПЧ- НЕУФОП У ТЕМСГЙПООЩНЙ ПРЕТБФПТБНЙ. ч ЬФПН ПФОПЫЕОЙЙ, ПОЙ ОБРПНЙОБАФ ПРЕТБФПТ IN ЛПЗДБ ФПФ ЙУРПМШЪХЕФУС У РПДЪБРТПУБНЙ; ПОЙ ВЕТХФ ЧУЕ ЪОБЮЕОЙС ЧЩЧЕДЕООЩЕ РПДЪБРТПУПН Й ПВТБВБФЩЧБАФ ЙИ ЛБЛ НПДХМШ. пДОБЛП, Ч ПФМЙЮЙЕ ПФ IN, ПОЙ НПЗХФ ЙУРПМШЪПЧБФШУС ФПМШЛП У РПДЪБРТПУБНЙ. урегйбмшоще претбфптщ ANY ЙМЙ SOME пРЕТБФПТЩ SOME Й ANY - ЧЪБЙНПЪБНЕОСЕНЩ ЧЕЪДЕ Й ФБН ЗДЕ НЩ ЙУРПМШЪХЕН ANY, SOME ВХДЕФ ТБВПФБФШ ФПЮОП ФБЛ ЦЕ. тБЪМЙЮЙЕ Ч ФЕТНЙОПМПЗЙЙ УПУФПЙФ Ч ФПН ЮФПВЩ РПЪЧПМЙФШ МАДСН ЙУРПМШЪПЧБФШ ФПФ ФЕТНЙО ЛПФПТЩК ОБЙВПМЕЕ ПДОПЪОБЮЕО. ьФП НПЦЕФ УПЪДБФШ РТПВМЕНХ; РПФПНХ ЮФП, ЛБЛ НЩ ЬФП ХЧЙДЙН, ОБЫБ ЙОФХЙГЙС НПЦЕФ ЙОПЗДБ ЧЧПДЙФШ Ч ЪБВМХЦДЕОЙЕ. йНЕЕФУС ОПЧЩК УРПУПВ ОБИПЦДЕОЙС РТПДБЧГБ У ЪБЛБЪЮЙЛБНЙ ТБЪНЕЭЕООЩНЙ Ч ЙИ ЗПТПДБИ ( ЧЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.1 ): SELECT * FROM Salespeople WHERE city = ANY (SELECT city FROM Customers ); пРЕТБФПТ ANY ВЕТЕФ ЧУЕ ЪОБЮЕОЙС ЧЩЧЕДЕООЩЕ РПДЪБРТПУПН, ( ДМС ЬФПЗП УМХЮБС - ЬФП ЧУЕ ЪОБЮЕОЙС city Ч ФБВМЙГЕ ъБЛБЪЮЙЛПЧ ), Й ПГЕОЙЧБЕФ ЙИ ЛБЛ ЧЕТОЩЕ ЕУМЙ МАВПК(ANY) ЙЪ ЙИ ТБЧОСЕФУС ЪОБЮЕОЙА ЗПТПДБ ФЕЛХЭЕК УФТПЛЙ ЧОЕЫОЕЗП ЪБРТПУБ. =============== SQL Execution Log ============ | SELECT * | | FROM Salespeople | | WHERE city = ANY | | (SELECT city | | FROM Customers); | | ============================================= | | cnum cname city comm | | ----- -------- ---- -------- | | 1001 Peel London 0.12 | | 1002 Serres San Jose 0.13 | | 1004 Motika London 0.11 | ============================================= тЙУХОПЛ 13. 1: йУРПМШЪПЧБОЙЕ ПРЕТБФПТБ ANY ьФП ПЪОБЮБЕФ, ЮФП РПДЪБРТПУ ДПМЦЕО ЧЩВЙТБФШ ЪОБЮЕОЙС ФБЛПЗП ЦЕ ФЙРБ ЛБЛ Й ФЕ, ЛПФПТЩЕ УТБЧОЙЧБАФУС Ч ПУОПЧОПН РТЕДЙЛБФЕ. ч ЬФПН ЕЗП ПФМЙЮЙЕ ПФ EXISTS, ЛПФПТЩК РТПУФП ПРТЕДЕМСЕФ, РТПЙЪЧПДЙФ МЙ РПД- ЪБРТПУ ТЕЪХМШФБФЩ ЙМЙ ОЕФ, Й ЖБЛФЙЮЕУЛЙ ОЕ ЙУРПМШЪХЕФ ЬФЙ ТЕЪХМШФБФЩ. йурпмшъпчбойе претбфптпч IN ймй EXISTS чнеуфп претбфптб ANY нЩ НПЦЕН ФБЛЦЕ ЙУРПМШЪПЧБФШ ПРЕТБФПТ IN ЮФПВЩ УПЪДБФШ ЪБРТПУ БОБМПЗЙЮОЩК РТЕДЩДХЭЕНХ : SELECT * FROM Salespeople WHERE city IN ( SELECT city FROM Customers ); ьФПФ ЪБРТПУ ВХДЕФ РТПЙЪЧПДЙФШ ЧЩЧПД РПЛБЪБООЩК Ч тЙУХОЛЕ 13.2. пДОБЛП, ПРЕТБФПТ ANY НПЦЕФ ЙУРПМШЪПЧБФШ ДТХЗЙЕ ТЕМСГЙПООЩЕ ПРЕТБ- ФПТЩ ЛТПНЕ ТБЧОСЕФУС ( = ), Й ФБЛЙН ПВТБЪПН ДЕМБФШ УТБЧОЕОЙС ЛПФПТЩЕ СЧМСАФУС ЧЩЫЕ ЧПЪНПЦОПУФЕК IN. оБРТЙНЕТ, НЩ НПЗМЙ ВЩ ОБКФЙ ЧУЕИ РТПДБЧГПЧ У ЙИ ЪБЛБЪЮЙЛБНЙ ЛПФПТЩЕ УМЕДХАФ ЙН Ч БМЖБЧЙФОПН РПТСДЛЕ ( ЧЩЧПД РПЛБЪБО ОБ тЙУХОЛЕ 13.3) SELECT * FROM Salespeople WHERE sname < ANY ( SELECT cname FROM Customers); 152 рпойнбойе SQL ______________________________________________________________________ зм. 13 =============== SQL Execution Log ============ | SELECT * | | FROM Salespeople | | WHERE city IN | | (SELECT city | | FROM Customers); | | ============================================= | | cnum cname city comm | | ----- -------- ---- -------- | | 1001 Peel London 0.12 | | 1002 Serres San Jose 0.13 | | 1004 Motika London 0.11 | ============================================= тЙУХОПЛ 13. 2: йУРПМШЪПЧБОЙЕ IN Ч ЛБЮЕУФЧЕ БМШФЕТОБФЙЧЩ Л ANY =============== SQL Execution Log ============ | SELECT * | | FROM Salespeople | | WHERE sname < ANY | | (SELECT cname | | FROM Customers); | | ============================================= | | cnum cname city comm | | ----- -------- ---- -------- | | 1001 Peel London 0.12 | | 1004 Motika London 0.11 | | 1003 Axelrod New York 0.10 | ============================================= тЙУХОПЛ 13. 3: йУРПМШЪПЧБОЙЕ ПРЕТБФПТБ ANY У ПРЕТБФПТПН "ОЕТБЧОП" ( < ) РТПДБЧГПЧ ДМС ЙИ ЪБЛБЪЮЙЛПЧ ЛПФПТЩЕ ХРПТСДПЮЕОЩ Ч БМЖБЧЙФОПН РПТСДЛЕ ( ЧЩЧПД РПЛБЪБО ОБ тЙУХОЛЕ 13.3) SELECT * FROM Salespeople WHERE sname < ANY ( SELECT cname FROM Customers); чУЕ УФТПЛЙ ВЩМЙ ЧЩВТБОЩ ДМС Serres Й Rifkin, РПФПНХ ЮФП ОЕФ ДТХЗЙИ ЪБ- ЛБЪЮЙЛПЧ ЮШЙ ЙНЕОБ УМЕДПЧБМЙ ВЩ ЪБ ЙНЙ Ч БМЖБЧЙФОПН РПТСДЛЕ. пВТБФЙФЕ ЧОЙНБОЙЕ ЮФП ЬФП СЧМСЕФУС d ПУОПЧОЩН ЬЛЧЙЧБМЕОФПН УМЕДХА- ЭЕНХ ЪБРТПУХ У EXISTS, ЮЕК ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.4: SELECT * FROM Salespeople outer WHERE EXISTS ( SELECT * FROM Customers inner WHERE outer.sname < inner.cname ); =============== SQL Execution Log ============ | SELECT * | | FROM Salespeople outer | | WHERE EXISTS | | (SELECT * | | FROM Customers inner | | WHERE outer.sname < inner.cname); | | ============================================= | | cnum cname city comm | | ----- -------- ---- -------- | | 1001 Peel London 0.12 | | 1004 Motika London 0.11 | | 1003 Axelrod New York 0.10 | ============================================= тЙУХОПЛ 13.4 йУРПМШЪПЧБОЙЕ EXISTS ЛБЛ БМШФЕТОБФЙЧБ ПРЕТБФПТХ ANY мАВПК ЪБРТПУ ЛПФПТЩК НПЦЕФ ВЩФШ УЖПТНХМЙТПЧБО У ANY ( ЙМЙ, ЛБЛ НЩ ХЧЙДЙН, У ALL ), НПЗ ВЩФШ ФБЛЦЕ УЖПТНХМЙТПЧБО У EXISTS, ИПФС ОБПВПТПФ ВХДЕФ ОЕЧЕТОП. уФТПЗП ЗПЧПТ, ЧБТЙБОФ У EXISTS ОЕ БВУПМАФОП ЙДЕОФЙЮЕО ЧБТЙБОФБН У ANY ЙМЙ У ALL ЙЪ-ЪБ ТБЪМЙЮЙ Ч ФПН ЛБЛ ПВТБВБФЩЧБАФУС РХУ- ФЩЕ( NULL ) ЪОБЮЕОЙС ( ЮФП ВХДЕФ ПВУХЦДБФШУС РПЪЦЕ Ч ЬФПК ЗМБЧЕ ). фЕН ОЙ НЕОЕЕ, У ФЕИОЙЮЕУЛПК ФПЮЛЙ ЪТЕОЙС, ЧЩ НПЗМЙ ВЩ ДЕМБФШ ЬФП ВЕЪ ANY Й ALL ЕУМЙ ВЩ ЧЩ УФБМЙ ПЮЕОШ ОБИПДЮЙЧЩ Ч ЙУРПМШЪПЧБОЙЙ EXISTS ( Й IS NULL ). вПМШЫЙОУФЧП РПМШЪПЧБФЕМЕК, ПДОБЛП, ОБИПДСФ ANY Й ALL ВПМЕЕ ХДПВОЩНЙ Ч ЙУРПМШЪПЧБОЙЙ ЮЕН EXISTS, ЛПФПТЩК ФТЕВХЕФ УППФОЕУЕООЩИ РПДЪБРТПУПЧ. лТПНЕ ФПЗП, Ч ЪБЧЙУЙНПУФЙ ПФ ТЕБМЙЪБГЙЙ, ANY Й ALL НПЗХФ, РП ЛТБКОЕК НЕТЕ Ч ФЕПТЙЙ, ВЩФШ ВПМЕЕ ЬЖЖЕЛФЙЧОЩНЙ ЮЕН EXISTS. рПДЪБРТПУЩ ANY ЙМЙ ALL НПЗХФ ЧЩРПМОСФШУС ПДЙО ТБЪ Й ЙНЕФШ ЧЩЧПД ЙУРПМШЪХЕНЩК ЮФПВЩ ПРТЕДЕМСФШ РТЕДЙЛБФ ДМС ЛБЦДПК УФТПЛЙ ПУОПЧОПЗП ЪБР- ТПУБ. EXISTS, У ДТХЗПК УФПТПОЩ, ВЕТЕФ УППФОЕУЕООЩК РПДЪБРТПУ, ЛПФПТЩК ФТЕВХЕФ ЮФПВЩ ЧЕУШ РПДЪБРТПУ РПЧФПТОП ЧЩРПМОСМУС ДМС ЛБЦДПК УФТПЛЙ ПУОПЧОПЗП ЪБРТПУБ. SQL РЩФБЕФУС ОБКФЙ ОБЙВПМЕЕ ЬЖЖЕЛФЙЧОЩК УРПУПВ ЧЩРПМОЕОЙС МАВПК ЛПНБОДЩ, Й НПЦЕФ РПРТПВПЧБФШ РТЕПВТБЪПЧБФШ НЕОЕЕ ЬЖЖЕЛФЙЧОХА ЖПТНХМХ ЪБРТПУБ Ч ВПМЕЕ ЬЖЖЕЛФЙЧОХА (ОП ЧЩ ОЕ НПЦЕФЕ ЧУЕЗДБ ТБУУЮЙФЩЧБФШ ОБ РПМХЮЕОЙЕ УБНПК ЬЖЖЕЛФЙЧОПК ЖПТНХМЙТПЧЛЙ ). пУОПЧОБС РТЙЮЙОБ ДМС ЖПТНХМЙТПЧЛЙ EXISTS ЛБЛ БМШФЕТОБФЙЧЩ ANY Й ALL Ч ФПН ЮФП ANY Й ALL НПЗХФ ВЩФШ ОЕУЛПМШЛП ОЕПДОПЪОБЮЕО, ЙЪ-ЪБ УРПУПВБ ЙУРПМШЪПЧБОЙС ЬФПЗП ФЕТНЙОБ Ч бОЗМЙКУЛПН СЪЩЛЕ, ЛБЛ ЧЩ ЬФП УЛПТП ХЧЙДЙФЕ. у РТЙИПДПН РПОЙНБОЙС ТБЪМЙЮЙС УРПУПВПЧ ЖПТНХМЙТПЧБОЙС ДБООПЗП ЪБРТПУБ, ЧЩ УНПЦЕФЕ РПТБВПФБФШ ОБД РТПГЕДХТБНЙ ЛПФПТЩЕ УЕКЮБУ ЛБЦХФУС чБН ФТХДОЩНЙ ЙМЙ ОЕХДПВОЩНЙ. лбл ANY нпцеф уфбфш оепдопъобюощн лБЛ РПДТБЪХНЕЧБМПУШ ЧЩЫЕ, ANY ОЕ РПМОПУФША ПДОПЪОБЮЕО. еУМЙ НЩ УПЪДБЕН ЪБРТПУ ЮФПВЩ ЧЩВТБФШ ЪБЛБЪЮЙЛПЧ ЛПФПТЩЕ ЙНЕАФ ВПМШЫЙК ТЕКФЙОЗ ЮЕН МАВПК ЪБЛБЪЮЙЛ Ч тЙНЕ, НЩ НПЦЕН РПМХЮЙФШ ЧЩЧПД ЛПФПТЩК ОЕУЛПМШЛП ПФМЙЮБМУС ВЩ ПФ ФПЗП ЮФП НЩ ПЦЙДБМЙ ( ЛБЛ РПЛБЪБОП Ч тЙУХОЛЕ 13.5 ): SELECT * FROM Customers WHERE rating > ANY ( SELECT rating FROM Customers WHERE city = Rome ); ч бОЗМЙКУЛПН СЪЩЛЕ, УРПУПВ ЛПФПТЩН НЩ ПВЩЮОП УЛМПООЩ ЙОФЕТРТЕФЙТПЧБФШ ПГЕОЛХ " ВПМШЫЕ ЮЕН МАВПК ( ЗДЕ city = Rome ) " , ДПМЦЕО ЧБН УППВЭЙФШ ЮФП ЬФП ЪОБЮЕОЙЕ ПГЕОЛЙ ДПМЦОП ВЩФШ ЧЩЫЕ ЮЕН ЪОБЮЕОЙЕ ПГЕОЛЙ Ч ЛБЦДПН УМХЮБЕ ЗДЕ ЪОБЮЕОЙЕ city = Rome. пДОБЛП ЬФП ОЕ ФБЛ, Ч УМХЮБЕ ANY - ЙУРПМШЪХЕНПН Ч SQL . ANY ПГЕОЙЧБЕФ ЛБЛ ЧЕТОП, ЕУМЙ РПДЪБРТПУ ОБИПДЙФ МАВПЕ ЪОБЮЕОЙЕ ЛПФПТПЕ ДЕМБЕФ ХУМПЧЙЕ ЧЕТОЩН. =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers | | WHERE rating > ANY | | (SELECT rating | | FROM Customers | | WHERE city = 'Rome'); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ------ | | 2002 Giovanni Rome 200 1003 | | 2003 Liu San Jose 200 1002 | | 2004 Grass Berlin 300 1002 | | 2008 Cisneros San Jose 300 1007 | ============================================= тЙУХОПЛ 13.5 лБЛ ПРЕТБФПТ "ВПМШЫЕ ЮЕН"( >) ЙОФЕТРТЕФЙТХЕФУС ANY еУМЙ НЩ ПГЕОЙН ANY УРПУПВПН ЙУРПМШЪХАЭЙН ЗТБННБФЙЛХ бОЗМЙКУЛПЗП сЪЩЛБ, ФП ФПМШЛП ЪБЛБЪЮЙЛЙ У ПГЕОЛПК 300 ВХДХФ РТЕЧЩЫБФШ Giovanni, ЛПФПТЩК ОБИПДЙФУС Ч тЙНЕ Й ЙНЕЕФ ПГЕОЛХ 200. пДОБЛП, РПДЪБРТПУ ANY ФБЛЦЕ ОБИПДЙФ Periera Ч тЙНЕ У ПГЕОЛПК 100. фБЛ ЛБЛ ЧУЕ ЪБЛБЪЮЙЛЙ У ПГЕОЛПК 200 ВЩМЙ ЧЩЫЕ ЬФПК, ПОЙ ВХДХФ ЧЩВТБОЩ, ДБЦЕ ЕУМЙ ЙНЕМУС ДТХЗПК ЪБЛБЪЮЙЛ ЙЪ тЙНБ(Giovanni) ЮШС ПГЕОЛБ ОЕ ВЩМБ ЧЩЫЕ ( ЖБЛФЙЮЕУЛЙ, ФП ЮФП ПДЙО ЙЪ ЧЩВТБООЩИ ЪБЛБЪЮЙЛПЧ ФБЛЦЕ ОБИПДЙФУС Ч тЙНЕ ОЕУХЭЕУФЧЕООП). фБЛ ЛБЛ РПДЪБРТПУ РТПЙЪЧЕМ РП ЛТБКОЕК НЕТЕ ПДОП ЪОБЮЕОЙЕ ЛПФПТПЕ УДЕМБЕФ РТЕДЙЛБФ ЧЕТОЩН Ч ПФОПЫЕОЙЙ ЬФЙИ УФТПЛ, УФТПЛЙ ВЩМЙ ЧЩВТБОЩ. юФПВЩ ДБФШ ДТХЗПК РТЙНЕТ, РТЕДРПМПЦЙН ЮФП НЩ ДПМЦОЩ ВЩМЙ ЧЩВЙТБФШ ЧУЕ РПТСДЛЙ УХНН РТЙПВТЕФЕОЙК ЛПФПТЩЕ ВЩМЙ ВПМШЫЕ ЮЕН РП ЛТБКОЕК НЕТЕ ПДЙО ЙЪ РПТСДЛПЧ ОБ 6-Е пЛФСВТС: SELECT * FROM Orders WHERE amt > ANY ( SELECT amt FROM Orders WHERE odate = 10/06/1990 ); чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.6. дБЦЕ ЕУМЙ УБНБ ЧЩУПЛБ УХННБ РТЙПВТЕФЕОЙК Ч ФБВМЙГЕ (9891.88) - ЙНЕМБУШ ОБ 6-Е пЛФСВТС, РТЕДЩДХЭБС УФТПЛБ ЙНЕЕФ ВПМЕЕ ЧЩУПЛПЕ ЪОБЮЕОЙЕ УХННЩ ЮЕН ДТХЗБ УФТПЛБ ОБ 6-Е пЛФСВТС, ЛПФПТБС ЙНЕМБ ЪОБЮЕОЙЕ УХННЩ = 1309.95. йНЕС ТЕМСГЙПООЩК ПРЕТБФПТ ">=" ЧНЕУФП РТПУФП " > ", ЬФБ УФТПЛБ ВХДЕФ ФБЛЦЕ ЧЩВТБОБ, РПФПНХ ЮФП ПОБ ТБЧОБ УБНПК УЕВЕ. лПОЕЮОП, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ ANY У ДТХЗПК SQL ФЕИОЙЛПК, ОБРТЙНЕТ У ФЕИОЙЛПК ПВЯЕДЙОЕОЙС. ьФПФ ЪБРТПУ ВХДЕФ ОБИПДЙФШ ЧУЕ РПТСДЛЙ УП ЪОБЮЕОЙЕН УХННЩ НЕОШЫЕК ЮЕН ЪОБЮЕОЙЕ МАВПК УХННЩ ДМС ЪБЛБЪЮЙЛБ Ч San Jose. ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.7 ): SELECT * FROM Orders WHERE amt < ANY ( SELECT amt FROM Orders A, Customers b WHERE a.cnum = b.cnum AND b.city = " San Jose' ); дБЦЕ ЕУМЙ ОБЙНЕОШЫЙК РПТСДПЛ Ч ФБВМЙГЕ ВЩМ ДМС ЪБЛБЪЮЙЛБ ЙЪ San Jose, ФП ВЩМ ЧФПТПК ОБЙВПМШЫЙК; УМЕДПЧБФЕМШОП РПЮФЙ ЧУЕ УФТПЛЙ ВХДХФ ЧЩВТБОЩ. рТПУФПК УРПУПВ ЪБРПНОЙФШ, ЮФП < ANY ЪОБЮЕОЙЕ НЕОШЫЕЕ ЮЕН ОБЙВПМШЫЕЕ ЧЩВТБООПЕ ЪОБЮЕОЙЕ, Б > ANY ЪОБЮЕОЙЕ ВПМШЫЕЕ ЮЕН ОБЙНЕОШЫЕЕ ЧЩВТБООПЕ ЪОБЮЕОЙЕ. =============== SQL Execution Log ============== | | | SELECT * | | FROM Orders | | WHERE amt > ANY | | (SELECT amt | | FROM Orders | | WHERE odate = 10/06/1990); | | =============================================== | | onum amt odate cnum snum | | ----- -------- ---------- ----- ------ | | 3002 1900.10 10/03/1990 2007 1004 | | 3005 5160.45 10/03/1990 2003 1002 | | 3009 1713.23 10/04/1990 2002 1003 | | 3008 4723.00 10/05/1990 2006 1001 | | 3011 9891.88 10/06/1990 2006 1001 | ================================================ тЙУХОПЛ 13. 6: чЩВТБООПЕ ЪОБЮЕОЙЕ ВПМШЫЕ ЮЕН МАВПЕ(ANY) ОБ 6-Е пЛФСВТС йурпмшъпчбойе претбфптпч ANY, ALL, й SOME 157 ______________________________________________________________________ =============== SQL Execution Log ============== | | | WHERE amt > ANY | | (SELECT amt | | FROM Orders a, Customers b | | WHERE a.cnum = b.cnum | | AND b.city = 'San Jose'); | | =============================================== | | onum amt odate cnum snum | | ----- -------- ---------- ----- ------ | | 3001 18.69 10/03/1990 2008 1007 | | 3003 767.10 10/03/1990 2001 1001 | | 3002 1900.10 10/03/1990 2007 1004 | | 3006 1098.10 10/03/1990 2008 1007 | | 3009 1713.23 10/04/1990 2002 1003 | | 3007 75.10 10/04/1990 2004 1002 | | 3008 4723.00 10/05/1990 2006 1001 | | 3010 1309.88 10/06/1990 2004 1002 | ================================================ тЙУХОПЛ 13. 7: йУРПМШЪПЧБОЙЕ ANY У ПВЯЕДЙОЕОЙЕН жБЛФЙЮЕУЛЙ, ЧЩЫЕХЛБЪБООЩЕ ЛПНБОДЩ ЧЕУШНБ РПИПЦЙ ОБ УМЕДХАЭЕЕ - (ЧЩЧПД РПЛБЪБО ОБ тЙУХОЛЕ 13.8) : SELECT * FROM Orders WHERE amt < ( SELECT MAX amt FROM Orders A, Customers b WHERE a.cnum = b.cnum AND b.city = " San Jose' ); =============== SQL Execution Log ============== | | | WHERE amt < | | (SELECT MAX (amt) | | FROM Orders a, Customers b | | WHERE a.cnum = b.cnum | | AND b.city = 'San Jose'); | | =============================================== | | onum amt odate cnum snum | | ----- -------- ---------- ----- ------ | | 3002 1900.10 10/03/1990 2007 1004 | | 3005 5160.45 10/03/1990 2003 1002 | | 3009 1713.23 10/04/1990 2002 1003 | | 3008 4723.00 10/05/1990 2006 1001 | | 3011 9891.88 10/06/1990 2006 1001 | ================================================ тЙУХОПЛ 13.8: йУРПМШЪПЧБОЙЕ БЗТЕЗБФОПК ЖХОЛГЙЙ ЧНЕУФП ANY урегйбмшощк претбфпт ALL у РПНПЭША ALL, РТЕДЙЛБФ СЧМСЕФУС ЧЕТОЩН, ЕУМЙ ЛБЦДПЕ ЪОБЮЕОЙЕ ЧЩВТБООПЕ РПДЪБРТПУПН ХДПЧМЕФЧПТСЕФ ХУМПЧЙА Ч РТЕДЙЛБФЕ ЧОЕЫОЕЗП ЪБРТПУБ. еУМЙ НЩ ИПФЙН РЕТЕУНПФТЕФШ ОБЫ РТЕДЩДХЭЙК РТЙНЕТ ЮФПВЩ ЧЩЧЕУФЙ ФПМШ- ЛП ФЕИ ЪБЛБЪЮЙЛПЧ ЮШЙ ПГЕОЛЙ, ЖБЛФЙЮЕУЛЙ, ЧЩЫЕ ЮЕН Х ЛБЦДПЗП ЪБЛБЪЮЙЛБ Ч рБТЙЦЕ, НЩ НПЦЕН ЧЧЕУФЙ УМЕДХАЭЕЕ ЮФПВЩ РТПЙЪЧЕУФЙ ЧЩЧПД РПЛБЪБООЩК Ч тЙУХОЛЕ 13.9: SELECT * FROM Customers WHERE rating > ALL (SELECT rating FROM Customers WHERE city = Rome ): =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers | | WHERE rating > ALL | | (SELECT rating | | FROM Customers | | WHERE city = 'Rome'); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ------ | | 2004 Grass Berlin 300 1002 | | 2008 Cisneros San Jose 300 1007 | ============================================= тЙУХОПЛ 13.9: йУРПМШЪПЧБОЙЕ ПРЕТБФПТБ ALL ьФПФ ПРЕТБФПТ РТПЧЕТСЕФ ЪОБЮЕОЙС ПГЕОЛЙ ЧУЕИ ЪБЛБЪЮЙЛПЧ Ч тЙНЕ. ъБФЕН ПО ОБИПДЙФ ЪБЛБЪЮЙЛПЧ У ПГЕОЛПК ВПМШЫЕК ЮЕН Х МАВПЗП ЙЪ ЪБЛБЪЮЙЛПЧ Ч тЙНЕ. уБНБ ЧЩУПЛБ ПГЕОЛБ Ч тЙНЕ - Х Giovanni( 200 ). уМЕДПЧБФЕМШОП, ЧЩВЙТБАФУС ФПМШЛП ЪОБЮЕОЙС ЧЩЫЕ ЬФЙИ 200. лБЛ Й Ч УМХЮБЕ У ANY, НЩ НПЦЕН ЙУРПМШЪПЧБФШ EXISTS ДМС РТПЙЪЧПДУФЧБ БМШФЕТОБФЙЧОПК ЖПТНХМЙТПЧЛЙ ФБЛПЗП ЦЕ ЪБРТПУБ - ( ЧЩЧПД РПЛБЪБО ОБ тЙУХОЛЕ 13.10 ): SELECT * FROM Customers outer WHERE NOT EXISTS ( SELECT * FROM Customers inner WHERE outer.rating < = inner.rating AND inner.city = 'Rome' ); =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers outer | | WHERE NOT EXISTS | | (SELECT * | | FROM Customers inner | | WHERE outer rating = inner.rating | | AND inner.city = 'Rome'); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ------ | | 2004 Grass Berlin 300 1002 | | 2008 Cisneros San Jose 300 1007 | ============================================= тЙУХОПЛ 13.10: йУРПМШЪПЧБОЙЕ EXISTS Ч ЛБЮЕУФЧЕ БМШФЕТОБФЙЧЩ Л ALL тбчеоуфчб й оетбчеоуфчб ALL ЙУРПМШЪХЕФУС Ч ПУОПЧОПН У ОЕТБЧЕОУФЧБНЙ ЮЕН У ТБЧЕОУФЧБНЙ, ФБЛ ЛБЛ ЪОБЮЕОЙЕ НПЦЕФ ВЩФШ "ТБЧОЩН ДМС ЧУЕИ" ТЕЪХМШФБФПН РПДЪБРТПУБ ФПМШЛП ЕУМЙ ЧУЕ ТЕЪХМШФБФЩ, ЖБЛФЙЮЕУЛЙ, ЙДЕОФЙЮОЩ. рПУНПФТЙФЕ УМЕДХАЭЙК ЪБРТПУ: SELECT * FROM Customers WHERE rating = ALL ( SELECT rating FROM Customers WHERE city = " San Jose' ); ьФБ ЛПНБОДБ ДПРХУФЙНБ, ОП , c ЬФЙНЙ ДБООЩНЙ, НЩ ОЕ РПМХЮЙН ОЙЛБЛПЗП ЧЩЧПДБ. фПМШЛП Ч ЕДЙОУФЧЕООПН УМХЮБЕ ЧЩЧПД ВХДЕФ ЧЩДБО ЬФЙН ЪБРТПУПН - ЕУМЙ ЧУЕ ЪОБЮЕОЙС ПГЕОЛЙ Ч San Jose ПЛБЦХФУС ЙДЕОФЙЮОЩНЙ. ч ЬФПН УМХЮБЕ, НПЦОП УЛБЪБФШ УМЕДХАЭЕЕ : SELECT * FROM Customers WHERE rating = ( SELECT DISTINCT rating FROM Customers WHERE city = " San Jose' ); пУОПЧОПЕ ТБЪМЙЮЙЕ Ч ФПН, ЮФП ЬФБ РПУМЕДОСС ЛПНБОДБ ДПМЦОБ РПФЕТРЕФШ ОЕХДБЮХ, ЕУМЙ РПДЪБРТПУ ЧЩЧЕДЕФ НОПЗП ЪОБЮЕОЙК, Ч ФП ЧТЕНС ЛБЛ ЧБТЙБОФ У ALL РТПУФП ОЕ ДБУФ ОЙЛБЛПЗП ЧЩЧПДБ. ч ПВЭЕН, ОЕ УБНБС ХДБЮОБС ЙДЕС ЙУРПМШЪПЧБФШ ЪБРТПУЩ ЛПФПТЩЕ ТБВПФБАФ ФПМШЛП Ч ПРТЕДЕМЕООЩИ УЙФХБГЙСИ РПДПВОП ЬФПК. фБЛ ЛБЛ ЧБЫБ ВБЪБ ДБООЩИ ВХДЕФ РПУФПСООП НЕОСФШУС, ЬФП ОЕХДБЮОЩК УРПУПВ, ЮФПВЩ ХЪОБФШ П ЕЕ УПДЕТЦБОЙЙ. пДОБЛП, ALL НПЦЕФ ВПМЕЕ ЬЖЖЕЛФЙЧОП ЙУРПМШЪПЧБФШУС У ОЕТБЧЕОУФЧБНЙ, ФП ЕУФШ У ПРЕТБФПТПН "< >". оП ХЮФЙФЕ ЮФП УЛБЪБООПЕ Ч SQL ЮФП - ЪОБЮЕОЙЕ ЛПФПТПЕ ОЕ ТБЧОСЕФУС ЧУЕН ТЕЪХМШФБФБН РПДЪБРТПУБ, - ВХДЕФ ПФМЙЮБФШУС ПФ ФПЗП ЦЕ ОП УЛБЪБООПЗП У ХЮЕФПН ЗТБННБФЙЛЙ бОЗМЙКУЛПЗП СЪЩЛБ. пЮЕЧЙДОП, ЕУМЙ РПДЪБРТПУ ЧПЪЧТБЭБЕФ НОПЗП ТБЪМЙЮОЩИ ЪОБЮЕОЙК, ЛБЛ ЬФП ПВЩЮОП ВЩЧБЕФ, ОЙ ПДОП ПФДЕМШОПЕ ЪОБЮЕОЙЕ ОЕ НПЦЕФ ВЩФШ ТБЧОП ЙН ЧУЕН Ч ПВЩЮОПН УНЩУМЕ. ч SQL, ЧЩТБЦЕОЙЕ - < > ALL - Ч ДЕКУФЧЙФЕМШОПУФЙ УППФЧЕФУФЧХЕФ " ОЕ ТБЧЕО МАВПНХ " ТЕЪХМШФБФХ РПДЪБРТПУБ. дТХЗЙНЙ УМПЧБНЙ, РТЕДЙЛБФ ЧЕТЕО, ЕУМЙ ДБООПЕ ЪОБЮЕОЙЕ ОЕ ОБКДЕОП УТЕДЙ ТЕЪХМШФБФПЧ РПДЪБРТП- УБ. уМЕДПЧБФЕМШОП, ОБЫ РТЕДЩДХЭЙК РТЙНЕТ РТПФЙЧПРПМПЦЕО РП УНЩУМХ ЬФП- НХ РТЙНЕТХ (У ЧЩЧПДПН РПЛБЪБООЩН Ч тЙУХОЛЕ 13.11): SELECT * FROM Customers WHERE rating < > ALL ( SELECT rating FROM Customers WHERE city = " San Jose' ); =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers | | WHERE rating < > ALL | | (SELECT rating | | FROM Customers | | WHERE city = 'San Jose'); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ------ | | 2001 Hoffman London 100 1001 | | 2006 Clemens London 100 1001 | | 2007 Pereira Rome 100 1004 | ============================================= тЙУХОПЛ 13.11: йУРПМШЪПЧБОЙЕ ALL У < > чЩЫЕХРПНСОХФЩК РПДЪБРТПУ ЧЩВЙТБЕФ ЧУЕ ПГЕОЛЙ ДМС ЗПТПДБ San Jose. пО ЧЩЧПДЙФ ОБВПТ ЙЪ ДЧХИ ЪОБЮЕОЙК: 200 ( ДМС Liu ) Й 300 (ДМС Cisneros). ъБФЕН, ПУОПЧОПК ЪБРТПУ, ЧЩВЙТБЕФ ЧУЕ УФТПЛЙ, У ПГЕОЛПК ОЕ УПЧРБДБАЭЕК ОЙ У ПДОПК ЙЪ ОЙИ - ДТХЗЙНЙ УМПЧБНЙ ЧУЕ УФТПЛЙ У ПГЕОЛПК 100. чЩ НПЦЕФЕ УЖПТНХМЙТПЧБФШ ФПФ ЦЕ УБНЩК ЪБРТПУ ЙУРПМШЪХС ПРЕТБФПТ NOT IN: SELECT* FROM Customers WHERE rating NOT IN ( SELECT rating FROM Customers WHERE city = " San Jose' ); чЩ НПЗМЙ ВЩ ФБЛЦЕ ЙУРПМШЪПЧБФШ ПРЕТБФПТ ANY: SELECT * FROM Customers WHERE NOT rating = ANY ( SELECT rating FROM Customers WHERE city = " San Jose' ); чЩЧПД ВХДЕФ ПДЙОБЛПЧ ДМС ЧУЕИ ФТЕИ ХУМПЧЙК. ртбчймшопе рпойнбойе ANY й ALL ч SQL, УЛБЪБФШ ЮФП - ЪОБЮЕОЙЕ ВПМШЫЕ( ЙМЙ НЕОШЫЕ ) ЮЕН МАВПЕ(ANY) ЙЪ ОБ- ВПТБ ЪОБЮЕОЙК - ФПЦЕ УБНПЕ ЮФП УЛБЪБФШ, ЮФП ПОП ВПМШЫЕ( ЙМЙ НЕОШЫЕ ) ЮЕН МАВПЕ ПДОП ПФДЕМШОПЕ ЙЪ ЬФЙИ ЪОБЮЕОЙК. й ОБПВПТПФ, УЛБЪБФШ ЮФП ЪОБЮЕОЙЕ ОЕ ТБЧОП ЧУЕНХ(ALL) ОБВПТХ ЪОБЮЕОЙК, ФПЦЕ ЮФП УЛБЪБФШ, ЮФП ОЕФ ФБЛПЗП ЪОБЮЕОЙС Ч ОБВПТЕ ЛПФПТПНХ ПОП ТБЧОП. лбл ANY, ALL, й EXIST рпуфхрбаф у пфухфуфчхаэйнй й оейъчеуфощнй дбоощнй лБЛ ВЩМП УЛБЪБОП, ЙНЕАФУС ОЕЛПФПТЩЕ ТБЪМЙЮЙ НЕЦДХ EXISTS Й ПРЕТБФП- ТБНЙ РТЕДУФБЧМЕООЩНЙ Ч ЬФПК ЗМБЧЕ ПФОПУЙФЕМШОП ФПЗП ЛБЛ ПОЙ ПВТБВБФЩЧБАФ ПРЕТБФПТ NULL. ANY Й ALL ФБЛЦЕ ПФМЙЮБАФУС ДТХЗ ПФ ДТХЗБ ФЕН ЛБЛ ПОЙ ТЕБЗЙТХАФ ЕУМЙ РПДЪБРТПУ ОЕ РТПЙЪЧЕМ ОЙЛБЛЙИ ЪОБЮЕОЙК ЮФПВЩ ЙУРПМШЪПЧБФШ ЙИ Ч УТБЧОЕОЙЙ. ьФЙ ТБЪМЙЮЙ НПЗХФ РТЙЧЕУФЙ Л ОЕРТЕДЧЙДЕООЩН ТЕ- ЪХМШФБФБН ОБ чБЫЙ ЪБРТПУЩ, ЕУМЙ ЧЩ ОЕ ВХДЕФЕ ЙИ ХЮЙФЩЧБФШ. лпздб рпдъбртпу чпъчтбэбефус рхуфщн пДОП ЪОБЮЙФЕМШОПЕ ТБЪМЙЮЙЕ НЕЦДХ ALL Й ANY - УРПУПВ ДЕКУФЧЙС Ч cЙФХБГЙЙ ЛПЗДБ РПДЪБРТПУ ОЕ ЧПЪЧТБЭБЕФ ОЙЛБЛЙИ ЪОБЮЕОЙК. ч РТЙОГЙРЕ, ЧУСЛЙК ТБЪ, ЛП- ЗДБ ДПРХУФЙНЩК РПДЪБРТПУ ОЕ Ч УПУФПСОЙЙ УДЕМБФШ ЧЩЧПД, ALL - БЧФПНБФЙЮЕУЛЙ ЧЕТЕО, Б ANY БЧФПНБФЙЮЕУЛЙ ОЕРТБЧЙМЕО. ьФП ПЪОБЮБЕФ, ЮФП УМЕДХАЭЙК ЪБРТПУ SELECT * FROM Customers WHERE rating > ANY ( SELECT rating FROM Customers WHERE city = Boston ); ОЕ РТПЙЪЧЕДЕФ ОЙЛБЛПЗП ЧЩЧПДБ, Ч ФП ЧТЕН ЛБЛ ЪБРТПУ - SELECT FROM Customers WHERE rating > ALL ( SELECT rating FROM Customers WHERE city = 'Boston' ); ЧЩЧЕДЕФ ЧУА ФБВМЙГХ ъБЛБЪЮЙЛПЧ. лПЗДБ ОЕФ ОЙЛБЛЙИ ЪБЛБЪЮЙЛПЧ Ч Boston, ЕУФЕУФЧЕООП, ОЙ ПДОП ЙЪ ЬФЙИ УТБЧОЕОЙК ОЕ ЙНЕЕФ ЪОБЮЕОЙС. ANY й ALL чнеуфп EXISTS у рхуфщн хлбъбфемен( NULL ) ъОБЮЕОЙС NULL ФБЛЦЕ ЙНЕАФ ОЕЛПФПТЩЕ РТПВМЕНЩ У ПРЕТБФПТБНЙ ОБРПДПВЙЕ ЬФЙИ. лПЗДБ SQL УТБЧОЙЧБЕФ ДЧБ ЪОБЮЕОЙС Ч РТЕДЙЛБФЕ, ПДОП ЙЪ ЛПФП- ТЩИ РХУФПЕ (NULL), ФП ТЕЪХМШФБФ ОЕЙЪЧЕУФЕО ( УНПФТЙФЕ зМБЧХ 5 ). оЕЙЪЧЕУФОЩК РТЕДЙЛБФ, РПДПВЕО ОЕЧЕТОПНХ Й СЧМСЕФУС РТЙЮЙОПК ФПЗП ЮФП УФТПЛБ ОЕ ЧЩВЙТБЕФУС, ОП ТБВПФБФШ ПО ВХДЕФ ЙОБЮЕ Ч ОЕЛПФПТЩИ РПИПЦЙИ ЪБРТПУБИ, Ч ЪБЧЙУЙНПУФЙ ПФ ФПЗП, ЙУРПМШЪХАФ ПОЙ ALL ЙМЙ ANY ЧНЕУФП EXISTS. тБУУНПФТЙН ОБЫ РТЕДЩДХЭЙК РТЙНЕТ: SELECT * FROM Customers WHERE rating > ANY ( SELECT rating FROM Customers WHERE city = 'Rome' ); Й ЕЭЕ ПДЙО РТЙНЕТ: SELECT * FROM Customers outer WHERE EXISTS ( SELECT * FROM Customers inner WHERE outer.rating > inner.rating AND inner.city = 'Rome' ); ч ПВЭЕН, ЬФЙ ДЧБ ЪБРТПУБ ВХДХФ ЧЕУФЙ УЕВС ПДЙОБЛПЧП. оП РТЕДРПМПЦЙН, ЮФП РПСЧЙМПУШ РХУФПЕ(NULL) ЪОБЮЕОЙЕ Ч УФПМВГЕ rating ФБВМЙГЩ ъБЛБЪЮЙЛПЧ: CNUM CNAME CITY RATING SNUM 2003 Liu SanJose NULL 1002 ч ЧБТЙБОФЕ У ANY, ЗДЕ ПГЕОЛБ Liu ЧЩВТБОБ ПУОПЧОЩН ЪБРТПУПН, ЪОБЮЕ- ОЙЕ NULL ДЕМБЕФ РТЕДЙЛБФ ОЕЙЪЧЕУФОЩН Б УФТПЛБ Liu ОЕ ЧЩВЙТБЕФУС ДМС ЧЩЧПДБ. пДОБЛП, Ч ЧБТЙБОФЕ У NOT EXISTS ЛПЗДБ ЬФБ УФТПЛБ ЧЩВТБОБ ПУОПЧОЩН ЪБРТПУПН, ЪОБЮЕОЙЕ NULL ЙУРПМШЪХЕФУС Ч РТЕДЙЛБФЕ РПД- ЪБРТПУБ, ДЕМБ ЕЗП ОЕЙЪЧЕУФОЩН Ч ЛБЦДПН УМХЮБЕ. ьФП ПЪОБЮБЕФ ЮФП РПД- ЪБРТПУ ОЕ ВХДЕФ РТПЙЪЧПДЙФШ ОЙЛБЛЙИ ЪОБЮЕОЙК, Й EXISTS ВХДЕФ ОЕРТБЧЙМЕО. ьФП, ЕУФЕУФЧЕООП, ДЕМБЕФ ПРЕТБФПТ NOT EXISTS ЧЕТОЩН. уМЕДПЧБФЕМШОП, УФТПЛБ Liu ВХДЕФ ЧЩВТБОБ ДМС ЧЩЧПДБ. ьФП ПУОПЧОПЕ ТБУИПЦДЕОЙЕ, Ч ПФМЙЮЙЕ ПФ ДТХЗЙИ ФЙРПЧ РТЕДЙЛБФПЧ, ЗДЕ ЪОБЮЕОЙЕ EXISTS ОЕЪБЧЙУЙНП ПФ ФПЗП ЧЕТОП ПОП ЙМЙ ОЕФ - ЧУЕЗДБ ОЕЙЪЧЕУФОП. чУЕ ЬФП СЧМСЕФУС БТЗХНЕОФПН Ч РПМШЪХ ЙУРПМШЪПЧБОЙС ЧБТЙБОФБ ЖПТНХМЙТПЧЛЙ У ANY. нЩ ОЕ УЮЙФБЕН ЮФП ЪОБЮЕОЙЕ NULL СЧМСЕФУС ЧЩЫЕ ЮЕН ДПРХУФЙНПЕ ЪОБЮЕ- ОЙЕ. вПМЕЕ ФПЗП, ТЕЪХМШФБФ ВХДЕФ ФПФ ЦЕ, ЕУМЙ НЩ ВХДЕН РТПЧЕТСФШ ДМС ВПМЕЕ ОЙЪЛПЗП ЪОБЮЕОЙС. йурпмшъпчбойе COUNT чнеуфп EXISTS рПДЮЕТЛОЕН, ЮФП ЧУЕ ЖПТНХМЙТПЧЛЙ У ANY Й ALL НПЗХФ ВЩФШ Ч ФПЮОПУФЙ ЧЩРПМОЕОЩ У EXISTS, Ч ФП ЧТЕН ЛБЛ ОБПВПТПФ ВХДЕФ ОЕЧЕТОП. иПФС Ч ЬФПН УМХЮБЕ, ФБЛЦЕ ЧЕТОП Й ФП ЮФП EXISTS Й NOT EXISTS РПДЪБРТПУЩ НПЗХФ ПВНБОЩЧБФШ РТЙ ЧЩРПМОЕОЙЙ ФЕИ ЦЕ УБНЩИ РПДЪБРТПУПЧ У COUNT(*) Ч РТЕДМПЦЕОЙЙ SELECT РПДЪБРТПУБ. еУМЙ ВПМШЫЕ ЮЕН ОПМШ УФТПЛ ЧЩЧПДЕ ВХДЕФ РПДУЮЙФБОП, ЬФП ЬЛЧЙЧБМЕОФОП EXISTS; Ч РТПФЙЧОПН УМХЮБЕ ЬФП ТБВПФБЕФ ФБЛЦЕ ЛБЛ NOT EXISTS. уМЕДХАЭЕЕ СЧМСЕФУС ЬФПНХ РТЙНЕТПН (ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.12 ): SELECT * FROM Customers outer WHERE NOT EXISTS ( SELECT * FROM Customers inner WHERE outer.rating < = inner.rating AND inner.city = 'Rome' ); =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers outer | | WHERE NOT EXISTS | | (SELECT * | | FROM Customers inner | | WHERE outer.rating ( SELECT COUNT (*) FROM Customers inner WHERE outer.rating < = inner.rating AND inner.city = 'Rome' ); чЩЧПД Л ЬФПНХ ЪБРТПУХ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 13.13. фЕРЕТШ чЩ ОБЮЙОБЕФЕ РПОЙНБФШ УЛПМШЛП УРПУПВПЧ ЙНЕЕФУС Ч SQL. еУМЙ ЬФП ЧУЕ ЛБЦЕФУС ОЕУЛПМШЛП РХФБООЩН ОБ ЬФПК УФБДЙЙ, ОЕФ РТЙЮЙОЩ ЧПМОПЧБФШУС. чЩ ПВХЮБЕФЕУШ ЮФПВЩ ЙУРПМШЪПЧБФШ ФХ ФЕИОЙЛХ ЛПФПТБС МХЮЫЕ ЧУЕЗП ПФЧЕЮБЕФ ЧБЫЙН ФТЕВПЧБОЙСН Й ОБЙВПМЕЕ РПОСФОБ ДМС ЧБУ. оБЮЙОБС У ЬФПЗП НЕУФБ, НЩ ИПФЙН РПЛБЪБФШ чБН ВПМШЫПЕ ЛПМЙЮЕУФЧП ЧПЪ- НПЦОПУФЕК, ЮФП ВЩ ЧЩ НПЗМЙ ОБКФЙ ЧБЫ УПВУФЧЕООЩК УФЙМШ. =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers outer | | WHERE 1 > | | (SELECT COUNT (*) | | FROM Customers inner | | WHERE outer.rating

Соседние файлы в папке Understanding SQL (rus - html)