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

Understanding SQL. Chapter 11. уппфоеуеооще рпдъбртпущ ч ьфпк змбче, нщ ртедуфбчйн чбу фйрх РПДЪБРТПУБ П ЛПФПТПН НЩ ОЕ ЗПЧПТЙМЙ Ч зМБЧЕ 10 - РПУЧСЭЕООПК УППФОЕУЕООПНХ РПДЪБРТПУХ. чЩ ХЪОБЕФЕ ЛБЛ ЙУРПМШЪПЧБФШ УППФОЕУЕООЩЕ РПДЪБРТПУЩ Ч РТЕДМПЦЕОЙСИ ЪБРТПУПЧ WHERE Й HAVING. уИПДУФЧБ Й ТБЪМЙЮЙ НЕЦДХ УППФОЕУЕООЩНЙ РПДЪБРТПУБНЙ Й ПВЯЕДЙОЕОЙСНЙ ВХДХФ ПВУХЦДБФШУС ДБМЕЕ, Й ЧЩ УНПЦЕФЕ РПЧЩУЙФШ ЧБЫЕ ЪОБОЙЕ РУЕЧДПОЙНПЧ Й РТЕЖЙЛУПЧ ЙНЕОЙ ФБВМЙГЩ - ЛПЗДБ ПОЙ ОЕПВИПДЙНЩ Й ЛБЛ ЙИ ЙУРПМШЪПЧБФШ. лбл ужптнйтпчбфш уппфоеуеоощк рпдъбртпу лПЗДБ ЧЩ ЙУРПМШЪХЕФЕ РПДЪБРТПУЩ Ч SQL, ЧЩ НПЦЕФЕ ПВТБФЙФШУС Л ЧОХФТЕООЕНХ ЪБРТПУХ ФБВМЙГЩ Ч РТЕДМПЦЕОЙЙ ЧОЕЫОЕЗП ЪБРТПУБ FROM , УЖПТНЙТПЧБЧ - УППФОЕУЕООЩК РПДЪБРТПУ. лПЗДБ ЧЩ ДЕМБЕФЕ ЬФП, РПДЪБРТПУ ЧЩРПМОСЕФУС ОЕПДОПЛТБФОП, РП ПДОПНХ ТБЪХ ДМС ЛБЦДПК УФТПЛЙ ФБВМЙГЩ ПУОПЧОПЗП ЪБРТПУБ. уППФОЕУЕООЩК РПДЪБРТПУ - ПДЙО ЙЪ ВПМШЫПЗП ЛПМЙЮЕУФЧБ ФПОЛЙИ РПОСФЙК Ч SQL ЙЪ-ЪБ УМПЦОПУФЙ Ч ЕЗП ПГЕОЛЕ. еУМЙ ЧЩ УХНЕЕФЕ ПЧМБДЕФШ ЙН, ЧЩ ОБКДЕФЕ ЮФП ПО ПЮЕОШ НПЭОЩК, РПФПНХ ЮФП НПЦЕФ ЧЩРПМОСФШ УМПЦОЩЕ ЖХОЛГЙЙ У РПНПЭША ПЮЕОШ МБЛПОЙЮОЩИ ХЛБЪБОЙК. оБРТЙНЕТ, ЙНЕЕФУС ПДЙО УРПУПВ ОБКФЙ ЧУЕИ ЪБЛБЪЮЙЛПЧ Ч РПТСДЛБИ ОБ 3-Е пЛФСВТС ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 11.1 ): SELECT * FROM Customers outer WHERE 10/03/1990 IN ( SELECT odate FROM Orders inner WHERE outer.cnum = inner.cnum ); лбл тбвпфбеф уппфоеуеоощк рпдъбртпу ч ЧЩЫЕХРПНСОХФПН РТЙНЕТЕ, "ЧОХФТЕООЙК"(inner) Й "ЧОЕЫОЙК"(outer), ЬФП РУЕЧДПОЙНЩ, РПДТПВОП ПВУХЦДЕООЩН Ч зМБЧЕ 9. нЩ ЧЩВТБМЙ ЬФЙ ЙНЕОБ ДМС ВПМШЫЕК СУОПУФЙ; ПОЙ ПФУЩМБАФ Л ЪОБЮЕОЙСН ЧОХФТЕООЙИ Й ЧОЕЫОЙИ ЪБРТПУПЧ, УППФЧЕФУФЧЕООП. фБЛ ЛБЛ ЪОБЮЕОЙЕ Ч РПМЕ cnum ЧОЕЫОЕЗП ЪБРТПУБ НЕОСЕФУС, ЧОХФТЕООЙК ЪБРТПУ ДПМЦЕО ЧЩРПМОСФШУС ПФДЕМШОП ДМС ЛБЦДПК УФТПЛЙ ЧОЕЫОЕЗП ЪБРТПУБ. уФТПЛБ ЧОЕЫОЕЗП ЪБРТПУБ ДМС ЛПФПТПЗП ЧОХФТЕО =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers outer | | WHERE 10/03/1990 IN | | (SELECT odate | | FROM Orders inner | | WHERE outer.cnum = inner.cnum); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ----- | | 2001 Hoffman London 100 1001 | | 2003 Liu San Jose 200 1002 | | 2008 Cisneros San Jose 300 1007 | | 2007 Pereira Rome 100 1004 | ============================================= тЙУХОПЛ 11.1: йУРПМШЪПЧБОЙЕ УППФОЕУЕООПЗП РПДЪБРТПУБ ОЙК ЪБРТПУ ЛБЦДЩК ТБЪ ВХДЕФ ЧЩРПМОЕО, ОБЪЩЧБЕФУС - ФЕЛХЭЕК УФТПЛПК-ЛБОДЙДБФПН. уМЕДПЧБФЕМШОП, РТПГЕДХТБ ПГЕОЛЙ ЧЩРПМОСЕНПК УППФОЕУЕООЩН РПДЪБРТПУПН - ЬФП: 1. чЩВТБФШ УФТПЛХ ЙЪ ФБВМЙГЩ ЙНЕОПЧБООПК Ч ЧОЕЫОЕН ЪБРТПУЕ. ьФП ВХДЕФ ФЕЛХЭБС УФТПЛБ-ЛБОДЙДБФ. 2. уПИТБОЙФШ ЪОБЮЕОЙС ЙЪ ЬФПК УФТПЛЙ-ЛБОДЙДБФБ Ч РУЕЧДПОЙНЕ У ЙНЕОЕН Ч РТЕДМПЦЕОЙЙ FROM ЧОЕЫОЕЗП ЪБРТПУБ. 3. чЩРПМОЙФШ РПДЪБРТПУ. чЕЪДЕ, ЗДЕ РУЕЧДПОЙН ДБООЩК ДМС ЧОЕЫОЕЗП ЪБРТПУБ ОБКДЕО ( Ч ЬФПН УМХЮБЕ "ЧОЕЫОЙК" ), ЙУРПМШЪПЧБФШ ЪОБЮЕОЙЕ ДМС ФЕЛХЭЕК УФТПЛЙ-ЛБОДЙДБФБ. йУРПМШЪПЧБОЙЕ ЪОБЮЕОЙС ЙЪ УФТПЛЙ- ЛБОДЙДБФБ ЧОЕЫОЕЗП ЪБРТПУБ Ч РПДЪБРТПУЕ ОБЪЩЧБЕФУС - ЧОЕЫОЕК УУЩМЛПК. 4. пГЕОЙФШ РТЕДЙЛБФ ЧОЕЫОЕЗП ЪБРТПУБ ОБ ПУОПЧЕ ТЕЪХМШФБФПЧ РПДЪБРТПУБ ЧЩРПМОСЕНПЗП Ч ЫБЗЕ 3. пО ПРТЕДЕМСЕФ - ЧЩВЙТБЕФУС МЙ УФТПЛБ-ЛБОДЙДБФ ДМС ЧЩЧПДБ. 5. рПЧФПТЙФШ РТПГЕДХТХ ДМС УМЕДХАЭЕК УФТПЛЙ-ЛБОДЙДБФБ ФБВМЙГЩ, Й ФБЛ ДБМЕЕ РПЛБ ЧУЕ УФТПЛЙ ФБВМЙГЩ ОЕ ВХДХФ РТПЧЕТЕОЩ. ч ЧЩЫЕХРПНСОХФПН РТЙНЕТЕ, SQL ПУХЭЕУФЧМСЕФ УМЕДХАЭХА РТПГЕДХТХ: 1. пО ЧЩВЙТБЕФ УФТПЛХ Hoffman ЙЪ ФБВМЙГЩ ъБЛБЪЮЙЛПЧ. 2. уПИТБОСЕФ ЬФХ УФТПЛХ ЛБЛ ФЕЛХЭХА УФТПЛХ-ЛБОДЙДБФ РПД РУЕЧДПОЙНПН - "ЧОЕЫОЙН". 3. ъБФЕН ПО ЧЩРПМОСЕФ РПДЪБРТПУ. рПДЪБРТПУ РТПУНБФТЙЧБЕФ ЧУА ФБВМЙГХ рПТСДЛПЧ ЮФПВЩ ОБКФЙ УФТПЛЙ ЗДЕ ЪОБЮЕОЙЕ cnum РПМЕ - ФБЛПЕ ЦЕ ЛБЛ ЪОБЮЕОЙЕ outer.cnum, ЛПФПТПЕ Ч ОБУФПСЭЕЕ ЧТЕНС ТБЧОП 2001, - РПМЕ cnum УФТПЛЙ HoffmanБ. ъБФЕН ПО ЙЪЧМЕЛБЕФ РПМЕ odate ЙЪ ЛБЦДПК УФТПЛЙ ФБВМЙГЩ рПТСДЛПЧ ДМС ЛПФПТПК ЬФП ЧЕТОП, Й ЖПТНЙТХЕФ ОБВПТ ЪОБЮЕОЙК РПМ odate. 4. рПМХЮЙЧ ОБВПТ ЧУЕИ ЪОБЮЕОЙК РПМ odate, ДМС РПМ cnum = 2001, ПО РТПЧЕТСЕФ РТЕДЙЛБФ ПУОПЧОПЗП ЪБРТПУБ ЮФПВЩ ЧЙДЕФШ ЙНЕЕФУС МЙ ЪОБЮЕОЙЕ ОБ 3 пЛФСВТС Ч ЬФПН ОБВПТЕ. еУМЙ ЬФП ФБЛ(Б ЬФП ФБЛ), ФП ПО ЧЩВЙТБЕФ УФТПЛХ HoffmanБ ДМС ЧЩЧПДБ ЕЕ ЙЪ ПУОПЧОПЗП ЪБРТПУБ. 5. пО РПЧФПТСЕФ ЧУА РТПГЕДХТХ, ЙУРПМШЪХС УФТПЛХ Giovanni ЛБЛ УФТПЛХ-ЛБОДЙ- ДБФБ, Й ЪБФЕН УПИТБОСЕФ РПЧФПТОП РПЛБ ЛБЦДБС УФТПЛБ ФБВМЙГЩ ъБЛБЪЮЙЛПЧ ОЕ ВХДЕФ РТПЧЕТЕОБ. лБЛ ЧЩ НПЦЕФЕ ЧЙДЕФШ, ЧЩЮЙУМЕОЙС ЛПФПТЩЕ SQL ЧЩРПМОСЕФ У РПНПЭША ЬФЙИ РТПУФЩИ ЙОУФТХЛГЙК - ЬФП РПМОЩК ЛПНРМЕЛУ. лПОЕЮОП, ЧЩ НПЗМЙ ВЩ ТЕЫЙФШ ФХ ЦЕ УБНХА РТПВМЕНХ ЙУРПМШЪХС ПВЯЕДЙОЕОЙЕ, УМЕДХАЭЕЗП ЧЙДБ ( ЧЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 11.2 ): SELECT * FROM Customers first, Orders second WHERE first.cnum = second.cnum AND second.odate = 10/03/1990; пВТБФЙФЕ ЧОЙНБОЙЕ ЮФП Cisneros ВЩМ ЧЩВТБО ДЧБЦДЩ, РП ПДОПНХ ТБЪХ ДМС ЛБЦДПЗП РПТСДЛБ ЛПФПТЩК ПО ЙНЕМ ДМС ДБООПК ДБФЩ. нЩ НПЗМЙ ВЩ ХУФТБОЙФШ ЬФП ЙУРПМШЪХС SELECT DISTINCT ЧНЕУФП РТПУФП SELECT. оП ЬФП ОЕПВСЪБФЕМШОП Ч ЧБТЙБОФЕ РПДЪБРТПУБ. пРЕТБФПТ IN, ЙУРПМШЪХЕНЩК Ч ЧБТЙБОФЕ РПДЪБРТПУБ, ОЕ ДЕМБЕФ ОЙЛБЛПЗП ТБЪМЙЮЙ НЕЦДХ ЪОБЮЕОЙСНЙ ЛПФПТЩЕ ЧЩВЙТБАФУС РПДЪБРТПУПН ПДЙО ТБЪ Й ЪОБЮЕОЙСНЙ ЛПФПТЩЕ ЧЩВЙТБАФУС ОЕПДОПЛТБФОП. уМЕДПЧБФЕМШОП DISTINCT ОЕПВСЪБФЕМЕО. =============== SQL Execution Log ============ | | | SELECT * | | FROM Customers first, Orders second | | WHERE first.cnum = second.cnum | | (SELECT COUNT (*) | | FROM Customers | | WHERE snum = main.snum; | | ============================================= | | cnum cname | | ----- -------- | | 1001 Peel | | 1002 Serres | ============================================= тЙУХОПЛ 11. 2 йУРПМШЪПЧБОЙЕ ПВЯЕДЙОЕОЙС ЧНЕУФП УППФОЕУЕООПЗП РПДЪБРТПУБ рТЕДРПМПЦЙН ЮФП НЩ ИПФЙН ЧЙДЕФШ ЙНЕОБ Й ОПНЕТБ ЧУЕИ РТПДБЧГПЧ ЛПФПТЩЕ ЙНЕАФ ВПМЕЕ ПДОПЗП ЪБЛБЪЮЙЛБ. уМЕДХАЭЙК ЪБРТПУ ЧЩРПМОЙФ ЬФП ДМС ЧБУ ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 11.3 ): SELECT snum, sname FROM Salespeople main WHERE 1 < ( SELECT COUNT (*) FROM Customers WHERE snum = main.snum ); пВТБФЙФЕ ЧОЙНБОЙЕ ЮФП РТЕДМПЦЕОЙЕ FROM РПДЪБРТПУБ Ч ЬФПН РТЙНЕТЕ ОЕ ЙУРПМШЪХЕФ РУЕЧДПОЙН. рТЙ ПФУХФУФЧЙЙ ЙНЕОЙ ФБВМЙГЩ ЙМЙ РТЕЖЙЛУБ РУЕЧДПОЙНБ, SQL НПЦЕФ ДМС ОБЮБМБ РТЙОСФШ, ЮФП МАВПЕ РПМЕ ЧЩЧПДЙФУС ЙЪ ФБВМЙГЩ У ЙНЕОЕН ХЛБЪБООЩН Ч РТЕДМПЦЕОЙЙ FROM ФЕЛХЭЕЗП ЪБРТПУБ. еУМЙ РПМЕ У ЬФЙН ЙНЕОЕН ПФУХФУФЧХЕФ( Ч ОБЫЕН УМХЮБЕ - snum ) Ч ФПК ФБВМЙГЕ, SQL ВХДЕФ РТПЧЕТСФШ ЧОЕЫОЙЕ ЪБРТПУЩ. йНЕООП РПЬФПНХ, РТЕЖЙЛУ ЙНЕОЙ ФБВМЙГЩ ПВЩЮОП ОЕПВИПДЙН Ч УППФОЕУЕООЩИ РПДЪБРТПУБИ - ДМС ПФНЕОЩ ЬФПЗП РТЕДРПМПЦЕОЙС. рУЕЧДПОЙНЩ ФБЛЦЕ ЮБУФП ЪБРТБЫЙЧБАФУС ЮФПВЩ ДБЧБФШ ЧБН ЧПЪНПЦОПУФШ УУЩМБФШУС Л ФПК ЦЕ УБНПК ФБВМЙГЕ ЧП ЧОХФТЕООЕН Й ЧОЕЫОЕН ЪБРТПУЕ ВЕЪ ЛБЛПК-МЙВП ОЕПДОПЪОБЮОПУФЙ. =============== SQL Execution Log ============ | | | SELECT snum sname | | FROM Salespeople main | | WHERE 1 < | | AND second.odate = 10/03/1990; | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ----- | | 2001 Hoffman London 100 1001 | | 2003 Liu San Jose 200 1002 | | 2008 Cisneros San Jose 300 1007 | | 2007 Pereira Rome 100 1004 | ============================================= тЙУХОПЛ 11.3: оБИПЦДЕОЙЕ РТПДБЧГПЧ У НОПЗПЮЙУМЕООЩНЙ ЪБЛБЪЮЙЛБНЙ йурпмшъпчбойе уппфоеуеоощи рпдъбртпупч дмс обипцдеойс пыйвпл йОПЗДБ РПМЕЪОП ЧЩРПМОСФШ ЪБРТПУЩ ЛПФПТЩЕ ТБЪТБВПФБОЩ УРЕГЙБМШОП ФБЛ ЮФПВЩ ОБИПДЙФШ ПЫЙВЛЙ. ьФП ЧУЕЗДБ ЧПЪНПЦОП РТЙ ДЕЖЕЛФОПК ЙОЖПТНБГЙЙ ЛПФПТХА НПЦОП ЧЧЕУФЙ Ч ЧБЫХ ВБЪХ ДБООЩИ, Й, ЕУМЙ ПОБ ЧЧЕДЕОБ, ВЩЧБЕФ ФТХДОП ЕЕ ПРТЕДЕМЙФШ. уМЕДХАЭЙК ЪБРТПУ ОЕ ДПМЦЕО РТПЙЪЧПДЙФШ ОЙЛБЛП- ЗП ЧЩЧПДБ. пО РТПУНБФТЙЧБЕФ ФБВМЙГХ рПТСДЛПЧ ЮФПВЩ ЧЙДЕФШ УПЧРБДБАФ МЙ РПМ snum Й cnum Ч ЛБЦДПК УФТПЛЕ ФБВМЙГЩ ъБЛБЪЮЙЛПЧ Й ЧЩЧПДЙФ ЛБЦ- ДХА УФТПЛХ ЗДЕ ЬФПЗП УПЧРБДЕОЙС ОЕФ. дТХЗЙНЙ УМПЧБНЙ, ЪБРТПУ ЧЩСУОСЕФ, ФПФ МЙ РТПДБЧЕГ ЛТЕДЙФПЧБМ ЛБЦДХА РТПДБЦХ ( ПО ЧПУРТЙОЙНБЕФ РПМЕ cnum, ЛБЛ РЕТЧЙЮОЩК ЛМАЮ ФБВМЙГЩ ъБЛБЪЮЙЛПЧ, ЛПФПТЩК ОЕ ВХДЕФ ЙНЕФШ ОЙЛБЛЙИ ДЧПКОЩИ ЪОБЮЕОЙК Ч ЬФПК ФБВМЙГЕ ). SELECT * FROM Orders main WHERE NOT snum = ( SELECT snum FROM Customers WHERE cnum = main.cnum ); рТЙ ЙУРПМШЪПЧБОЙЙ НЕИБОЙЪНБ УРТБЧПЮОПК ГЕМПУФОПУФЙ ( ПВУХЦДЕООПЗП Ч зМБЧЕ 19 ), ЧЩ НПЦЕФЕ ВЩФШ ЗБТБОФЙТПЧБОЩ ПФ ОЕЛПФПТЩИ ПЫЙВПЛ ФБЛПЗП ЧЙДБ. ьФПФ НЕИБОЙЪН ОЕ ЧУЕЗДБ ДПУФХРЕО, ИПФС ЕЗП ЙУРПМШЪПЧБОЙЕ ЦЕМБФЕМШОП ЧП ЧУЕИ УМХЮБСИ, РТЙЮЕН РПЙУЛ ПЫЙВЛЙ ЪБРТПУБ ПРЙУБООЩК ЧЩЫЕ, НПЦЕФ ВЩФШ ЕЭЕ РПМЕЪОЕЕ. утбчоеойе фбвмйгщ у упвпк чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ УППФОЕУЕООЩК РПДЪБРТПУ ПУОПЧБООЩК ОБ ФПК ЦЕ УБНПК ФБВМЙГЕ ЮФП Й ПУОПЧОПК ЪБРТПУ. ьФП ДБУФ ЧБН ЧПЪНПЦОПУФШ ЙЪЧМЕЮШ ПРТЕДЕМЕООЩЕ УМПЦОЩЕ ЖПТНЩ РТПЙЪЧЕДЕООПК ЙОЖПТНБГЙЙ. оБРТЙНЕТ, НЩ НПЦЕН ОБКФЙ ЧУЕ РПТСДЛЙ УП ЪОБЮЕОЙСНЙ УХНН РТЙПВТЕФЕОЙК ЧЩЫЕ УТЕДОЕЗП ДМС ЙИ ЪБЛБЪЮЙЛПЧ ( ЧЩЧПД РПЛБЪБО Ч тЙУХОЛЕ 11.4 ): SELECT * FROM Orders outer WHERE amt > ( SELECT AVG amt FROM Orders inter WHERE inner.cnum = outer.cnum ); =============== SQL Execution Log ============== | | | SELECT * | | FROM Orders outer | | WHERE amt > | | (SELECT AVG (amt) | | FROM Orders inner | | WHERE inner.cnum = outer.cnum | | =============================================== | | onum amt odate cnum snum | | ----- -------- ---------- ----- ------ | | 3006 1098.19 10/03/1990 2008 1007 | | 3010 1309.00 10/06/1990 2004 1002 | | 3011 9891.88 10/06/1990 2006 1001 | ================================================ тЙУХОПЛ 11.4: уППФОЕУЕОЙЕ ФБВМЙГЩ У УПВПК лПОЕЮОП, Ч ОБЫЕК НБМЕОШЛПК ФЙРПЧПК ФБВМЙГЕ, ЗДЕ ВПМШЫЙОУФЧП ЪБЛБЪЮЙЛПЧ ЙНЕАФ ФПМШЛП ПДЙО РПТСДПЛ, ВПМШЫЙОУФЧП ЪОБЮЕОЙК СЧМСАФУС ПДОПЧТЕНЕООП УТЕДОЙНЙ Й УМЕДПЧБФЕМШОП ОЕ ЧЩВЙТБАФУС. дБЧБКФЕ ЧЧЕДЕН ЛПНБОДХ ДТХЗЙН УРПУПВПН ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 11.5 ): SELECT * FROM Orders outer WHERE amt > = ( SELECT AVG (amt) FROM Orders inner WHERE inner.cnum = outer.cnum ); =============== SQL Execution Log ============== | | | SELECT * | | FROM Orders outer | | WHERE amt > = | | (SELECT AVG (amt) | | FROM Orders inner | | WHERE inner.cnum = outer.cnum); | | =============================================== | | onum amt odate cnum snum | | ----- -------- ---------- ----- ------ | | 3003 767.19 10/03/1990 2001 1001 | | 3002 1900.10 10/03/1990 2007 1004 | | 3005 5160.45 10/03/1990 2003 1002 | | 3006 1098.19 10/03/1990 2008 1007 | | 3009 1713.23 10/04/1990 2002 1003 | | 3010 1309.95 10/06/1990 2004 1002 | | 3011 9891.88 10/06/1990 2006 1001 | ================================================ тЙУХОПЛ 11.5: чЩВЙТБАФУС РПТСДЛЙ ЛПФПТЩЕ > = УТЕДОЕК УХННЕ РТЙПВТЕФЕОЙК ДМС ЙИ ЪБЛБЪЮЙЛПЧ. тБЪМЙЮЙЕ, ЛПОЕЮОП, Ч ФПН, ЮФП ТЕМСГЙПООЩК ПРЕТБФПТ ПУОПЧОПЗП РТЕДЙЛБФБ ЧЛМАЮБЕФ ЪОБЮЕОЙС ЛПФПТЩЕ ТБЧОСАФУС УТЕДОЕНХ ( ЮФП ПВЩЮОП ПЪОБЮБЕФ ЮФП ПОЙ - ЕДЙОУФЧЕООЩЕ РПТСДЛЙ ДМС ДБООЩИ ЪБЛБЪЮЙЛПЧ ). уппфоеуеооще рпдъбртпущ ч ртедмпцеойй HAVING фБЛЦЕ ЛБЛ РТЕДМПЦЕОЙЕ HAVING НПЦЕФ ВТБФШ РПДЪБРТПУЩ, ПО НПЦЕФ ВТБФШ Й УППФОЕУЕООЩЕ РПДЪБРТПУЩ. лПЗДБ ЧЩ ЙУРПМШЪХЕФЕ УППФОЕУЕООЩК РПДЪБРТПУ Ч РТЕДМПЦЕОЙЙ HAVING, ЧЩ ДПМЦОЩ ПЗТБОЙЮЙЧБФШ ЧОЕЫОЙЕ УУЩМЛЙ Л РПЪЙГЙСН ЛПФПТЩЕ НПЗМЙ ВЩ ОЕРПУТЕДУФЧЕООП ЙУРПМШЪПЧБФШУС Ч УБНПН РТЕДМПЦЕ- ОЙЙ HAVING. чЩ НПЦЕФЕ ЧУРПНОЙФШ ЙЪ зМБЧЩ 6 ЮФП РТЕДМПЦЕОЙЕ HAVING НПЦЕФ ЙУРПМШЪПЧБФШ ФПМШЛП БЗТЕЗБФОЩЕ ЖХОЛГЙЙ ЛПФПТЩЕ ХЛБЪБОЩ Ч ЙИ РТЕДМПЦЕОЙЙ SELECT ЙМЙ РПМ ЙУРПМШЪХЕНЩЕ Ч ЙИ РТЕДМПЦЕОЙЙ GROUP BY. пОЙ СЧМСАФУС ФПМШЛП ЧОЕЫОЙНЙ УУЩМЛБНЙ, ЛПФПТЩЕ ЧЩ НПЦЕФЕ ДЕМБФШ. чУЕ ЬФП РПФПНХ, ЮФП РТЕДЙЛБФ РТЕДМПЦЕОЙС HAVING ПГЕОЙЧБЕФУС ДМС ЛБЦДПК ЗТХРРЩ ЙЪ ЧОЕЫОЕЗП ЪБРТПУБ, Б ОЕ ДМС ЛБЦДПК УФТПЛЙ. уМЕДПЧБФЕМШОП, РПДЪБРТПУ ВХДЕФ ЧЩРПМОСФШУС ПДЙО ТБЪ ДМС ЛБЦДПК ЗТХРРЩ ЧЩЧЕДЕООПК ЙЪ ЧОЕЫОЕЗП ЪБРТПУБ, Б ОЕ ДМС ЛБЦДПК УФТПЛЙ. рТЕДРПМПЦЙН ЮФП ЧЩ ИПФЙФЕ УХННЙТПЧБФШ ЪОБЮЕОЙС УХНН РТЙПВТЕФЕОЙК РПЛХРПЛ ЙЪ ФБВМЙГЩ рПТСДЛПЧ, УЗТХРРЙТПЧБЧ ЙИ РП ДБФБН, ХДБМЙЧ ЧУЕ ДБФЩ ЗДЕ ВЩ SUM ОЕ ВЩМ РП ЛТБКОЕК НЕТЕ ОБ 2000.00 ЧЩЫЕ НБЛУЙНБМШОПК ( MAX ) УХННЩ: SELECT odate, SUM (amt) FROM Orders a GROUP BY odate HAVING SUM (amt) > ( SELECT 2000.00 + MAX (amt) FROM Orders b WHERE a.odate = b.odate ); рПДЪБРТПУ ЧЩЮЙУМСЕФ ЪОБЮЕОЙЕ MAX ДМС ЧУЕИ УФТПЛ У ФПК ЦЕ УБНПК ДБФПК ЮФП Й Х ФЕЛХЭЕК БЗТЕЗБФОПК ЗТХРРЩ ПУОПЧОПЗП ЪБРТПУБ. ьФП ДПМЦОП ВЩФШ ЧЩРПМОЕОП, ЛБЛ Й ТБОЕЕ, У ЙУРПМШЪПЧБОЙЕН РТЕДМПЦЕОЙС WHERE. уБН РПДЪБРТПУ ОЕ ДПМЦЕО ЙУРПМШЪПЧБФШ РТЕДМПЦЕОЙС GROUP BY ЙМЙ HAVING. уппфоеуеооще рпдъбртпущ й пвяедйоеойс лБЛ ЧЩ Й НПЗМЙ РТЕДРПМПЦЙФШ, УППФОЕУЕООЩЕ РПДЪБРТПУЩ РП РТЙТПДЕ ВМЙЪЛЙ Л ПВЯЕДЙОЕОЙСН - ПОЙ ПВБ ЧЛМАЮБАФ РТПЧЕТЛХ ЛБЦДПК УФТПЛЙ ПДОПК ФБВМЙГЩ У ЛБЦДПК УФТПЛПК ДТХЗПК ( ЙМЙ РУЕЧДПОЙНПН ЙЪ ФПК ЦЕ ) ФБВМЙГЩ. чЩ ОБКДЕФЕ ЮФП ВПМШЫЙОУФЧП ПРЕТБГЙК ЛПФПТЩЕ НПЗХФ ЧЩРПМОСФШУС У ПДОЙН ЙЪ ОЙИ ВХДХФ ФБЛЦЕ ТБВПФБФШ Й У ДТХЗЙН. пДОБЛП ЙНЕЕФУС ТБЪМЙЮЙЕ Ч РТЙЛМБДОПК РТПЗТБННЕ НЕЦДХ ОЙНЙ, ФБЛПЕ ЛБЛ ЧЩЫЕХРПНСОХФБС РПФТЕВОПУФШ Ч ЙУРПМШЪПЧБОЙЙ DISTINCT У ПВЯЕДЙОЕОЙЕН Й ЕЗП ОЕПВСЪБФЕМШОПУФШ У РПДЪБРТПУПН. йНЕАФУС ФБЛЦЕ ОЕЛПФПТЩЕ ЧЕЭЙ ЛПФПТЩЕ ЛБЦДЩК НПЦЕФ ДЕМБФШ ФБЛ, ЛБЛ ЬФПЗП ОЕ НПЦЕФ ДТХЗПК. рПДЪБРТПУЩ, ОБРТЙНЕТ, НПЗХФ ЙУРПМШЪПЧБФШ БЗТЕЗБФОХА ЖХОЛГЙА Ч РТЕДЙЛБФЕ, ДЕМБ ЧПЪНПЦОЩН ЧЩРПМОЕОЙЕ ПРЕТБГЙК ФЙРБ ОБЫЕЗП РТЕДЩДХЭЕЗП РТЙНЕТБ Ч ЛПФПТПН НЩ ЙЪЧМЕЛМЙ РПТСДЛЙ ХУТЕДОЕООЩЕ ДМС ЙИ ЪБЛБЪЮЙЛПЧ. пВЯЕДЙОЕОЙС, У ДТХЗПК УФПТПОЩ, НПЗХФ ЧЩЧПДЙФШ УФТПЛЙ ЙЪ ПВЕЙИ УТБЧОЙЧБЕНЩИ ФБВМЙГ, Ч ФП ЧТЕН ЛБЛ ЧЩЧПД РПДЪБРТПУПЧ ЙУРПМШЪХЕФУС ФПМШЛП Ч РТЕДЙЛБФБИ ЧОЕЫОЙИ ЪБРТПУПЧ. лБЛ РТБЧЙМП, ЖПТНБ ЪБРТПУБ ЛПФПТБС ЛБЦЕФУС ОБЙВПМЕЕ ЙОФХЙФЙЧОПК ВХДЕФ ЧЕТПСФОП МХЮЫЕК Ч ЙУРПМШЪПЧБОЙЙ, ОП РТЙ ЬФПН ИПТПЫП ВЩ ЪОБФШ ПВЕ ФЕИОЙЛЙ ДМС ФЕИ УЙФХБГЙК ЛПЗДБ ФБ ЙМЙ ЙОБС НПЗХФ ОЕ ТБВПФБФШ. теъане чЩ НПЦЕФЕ РПЪДТБЧМСФШ УЕВС У ПЧМБДЕОЙЕН ВПМШЫПЗП ЛХУЛБ ЙЪ ТБУУНПФТЕООЩИ РПОСФЙК Ч SQL - УППФОЕУЕООПЗП РПДЪБРТПУБ. чЩ ЧЙДЕМЙ ЛБЛ УППФОЕУЕООЩК РПДЪБРТПУ УЧСЪБО У ПВЯЕДЙОЕОЙЕН, Б ФБЛЦЕ, ЛБЛ ЕЗП НПЦОП ЙУРПМШЪПЧБФШ У БЗТЕЗБФОЩНЙ ЖХОЛГЙСНЙ Й Ч РТЕДМПЦЕОЙЙ HAVING. ч ПВЭЕН, ЧЩ ФЕРЕТШ ХЪОБМЙ ЧУЕ ФЙРЩ РПДЪБРТПУПЧ РПМОПУФША. уМЕДХАЭЙК ЫБЗ - ПРЙУБОЙЕ ОЕЛПФПТЩИ SQL УРЕГЙБМШОЩИ ПРЕТБФПТПЧ. пОЙ ВЕТХФ РПДЪБРТПУЩ ЛБЛ БТЗХНЕОФЩ, ЛБЛ ЬФП ДЕМБЕФ IN, ОП Ч ПФМЙЮЙЕ ПФ IN, ПОЙ НПЗХФ ЙУРПМШЪПЧБФШУС ФПМШЛП Ч РПДЪБРТПУБИ. рЕТЧЩК ЙЪ ЙИ, РТЕДУФБЧМЕООЩК Ч зМБЧЕ 12, - ОБЪЩЧБЕФУС EXISTS. тбвпфб у SQL 1. оБРЙЫЙФЕ ЛПНБОДХ SELECT ЙУРПМШЪХАЭХА УППФОЕУЕООЩК РПДЪБРТПУ, ЛПФПТБС ЧЩВЕТЕФ ЙНЕОБ Й ОПНЕТБ ЧУЕИ ЪБЛБЪЮЙЛПЧ У НБЛУЙНБМШОЩНЙ ДМС ЙИ ЗПТПДПЧ ПГЕОЛБНЙ. 2. оБРЙЫЙФЕ ДЧБ ЪБРТПУБ ЛПФПТЩЕ ЧЩВЕТХФ ЧУЕИ РТПДБЧГПЧ ( РП ЙИ ЙНЕОЙ Й ОПНЕТХ ) ЛПФПТЩЕ Ч УЧПЙИ ЗПТПДБИ ЙНЕАФ ЪБЛБЪЮЙЛПЧ ЛПФПТЩИ ПОЙ ОЕ ПВУМХЦЙЧБАФ. пДЙО ЪБРТПУ - У ЙУРПМШЪПЧБОЙЕН ПВЯЕДЙОЕОЙС Й ПДЙО - У УППФОЕУЕООЩН РПДЪБРТПУПН. лПФПТПЕ ЙЪ ТЕЫЕОЙК ВХДЕФ ВПМЕЕ ЙЪСЭОЩН? ( рПДУЛБЪЛБ: ПДЙО ЙЪ УРПУПВПН ЬФП УДЕМБФШ, УПУФПЙФ Ч ФПН, ЮФПВЩ ОБИПДЙФШ ЧУЕИ ЪБЛБЪЮЙЛПЧ ОЕ ПВУМХЦЙЧБЕНЩИ ДБООЩН РТПДБЧГПН Й ПРТЕДЕМЙФШ, ОБИПДЙФУС МЙ ЛБЦДЩК ЙЪ ОЙИ Ч ЗПТПДЕ РТПДБЧГБ. ) ( уН. рТЙМПЦЕОЙЕ A ДМС ПФЧЕФПЧ. )

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