Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БД книги 2 / материалы по FoxPro / GL17
.PASѓ‹Ђ‚Ђ 17.
€‘ЏЋ‹њ‡“…Њ ЉЋЊЂЌ„› џ‡›ЉЂ SQL
"Ђ ⥯Ґам § Ўг¤м⥠ўбҐ, 祬㠢 б гзЁ«Ё!". ђ бᬮвॢ Є®¬ ¤л
SQL - п§лЄ § Їа®б®ў, ўл ©¤ҐвҐ, зв® ў нв®© Ё§ЎЁв®© да §Ґ Ґбвм
¤®«п ЁбвЁл. џ§лЄ SQL, ЁбЇ®«м§гҐ¬л© ў® ¬®ЈЁе ‘“Ѓ„, пў«пҐвбп
¬®йл¬, нддҐЄвЁўл¬ б।бвў®¬ ®Ўа Ў®вЄЁ Ў § ¤ ле. ‘а ўЁвҐ
ЇаЁў®¤Ё¬лҐ Ё¦Ґ ®ўлҐ ў аЁ вл Їа®Ја ¬¬ б ЇаҐ¦Ё¬Ё Ё гЎҐ¤ЁвҐбм ў
н⮬ б ¬Ё.
17.1. ЏаЁ¬ҐпҐ¬ Є®¬ ¤г SELECT (SQL)
ђҐ§г«мв ⮬ Ў®«миЁбвў ®ЇҐа жЁ© б Ѓ„ пў«пҐвбп в Ў«Ёж : ®ў п
Ѓ„, а бЇҐз вЄ , ¤ўг¬Ґал© ¬ ббЁў, ⥪бв®ўл© д ©«, нЄа п в Ў«Ёж Ё в.Ї.
ђ ҐҐ ўл г§ «Ё, Є Є ®вЄалў вм Ѓ„, ®ЎҐбЇҐзЁў вм г¦го гЇ®а冷祮бвм,
ЇаЁў«ҐЄ вм ¤ лҐ ўбЇ®¬®Ј ⥫мле Ѓ„, ЇҐаҐЄ«оз вм Ї®в®Є ўлў®¤ Ё Їа.
Ѓ®«миЁҐ § Ёп, гбЁ«Ёп Ё вй ⥫м®бвм вॡговбп, зв®Ўл ®ЇвЁ¬Ё§Ёа®ў вм
ўлЇ®«ҐЁҐ Їа®Ја ¬¬.
Љ®¬ ¤ SELECT п§лЄ SQL ®ЇаҐ¤Ґ«пҐв гЄ § го ўлиҐ ®Ўа Ў®вЄг
Ў § ¤ ле б ўв®¬ вЁзҐбЄ®© ®ЇвЁ¬Ё§ жЁҐ© Їа®жҐбб , § ¬Ґпп б®Ў®©
ҐбЄ®«мЄ® Є®¬ ¤, зЁ п б USE. ќв® ®ЇаҐ¤Ґ«ҐЁҐ Їа®Ёб室Ёв
«®ЈЁзҐбЄ®¬ га®ўҐ, ЎҐ§ «ЁиҐ© ¤Ґв «Ё§ жЁЁ. Џ®н⮬㠤 го Є®¬ ¤г
¬®¦Ґв ЁбЇ®«м§®ў вм Ё зЁ ойЁ©, ¤®бЄ® «м® Ё§гзЁўиЁ© ЇаЁ¬Ґал
ЇаЁ¬ҐҐЁп. Ќ 祬 б ЇаЁ¬Ґа Ё ¬л.
ЏаЁ¬Ґа 17.1. Џа®Ја ¬¬г ЇаЁ¬Ґа 16.2 § ¬ҐпҐв б«Ґ¤гой п Є®¬ ¤ :
SELECT Famil, KNaz, FNaz FROM Dipl c, Kafedr a, Faki b ;
WHERE (c.NKaf=a.NKaf AND a.NFak=b.NFak) AND Pr =.F. TO PRINTER.
(ЇаЁ ЇҐаҐ®бҐ Є®¬ ¤л ®ўго бва®Єг ¤®Ў ў«пов ";" ў Є®Ґж ЇаҐ¤л¤г饩;
Ґ § Ўлў ©вҐ ®бв ў«пвм Їа®ЎҐ« - б«Ґў ®в ";" Ё«Ё ў з «Ґ ®ў®© бва®ЄЁ
- ў® Ё§ЎҐ¦ ЁҐ "бЄ«ҐЁў Ёп" б«®ў).
‡ ЇЁбм "Dipl c, Kafedr a, Faki b" б®Ї®бв ў«пҐв Ё¬Ґ ¬ Ѓ„ «®Є «млҐ
ЇбҐў¤®Ё¬л (Ё¬Ґ ) c,a,b, ўҐ Є®¬ ¤л SELECT Ґ Ё¬ҐойЁҐ бЁ«л.
‘®ўЇ ¤ ойЁҐ Ё¬Ґ Ї®«Ґ© а §«Ёзле (ЁбЇ®«м§гҐ¬ле ў Є®¬ ¤Ґ) Ѓ„
®Ўп§ вҐ«м® гв®зповбп «®Є «мл¬Ё ЇбҐў¤®Ё¬ ¬Ё Ё«Ё (ў ®вбгвбвўЁҐ
«®Є «м®Ј® ЇбҐў¤®Ё¬ ) Ё¬Ґ ¬Ё Ѓ„. …б«Ё «®Є «мл© ЇбҐў¤®Ё¬ ў ¬Ё
§ ¤ , в® Ё¬Ґ® ҐЈ® ¤® ЁбЇ®«м§®ў вм ¤«п гв®зҐЁп Ё¬Ґ Ї®«Ґ©.
Џ®бЄ®«мЄг Ё¬Ґ Ї®«Ґ© Famil, KNaz, FNaz, Pr гЁЄ «мл, ®Ё ¤ л ЎҐ§
Єў «ЁдЁЄ в®а®ў, е®вп § ЇЁбм "c.Famil, a.KNaz, b.FNaz" в Є¦Ґ ¤®ЇгбвЁ¬ .
"ЂЈ«®п§лзл¬ зЁв ⥫п¬" ўбҐ 㦥 ¤®«¦® Ўлвм пб®, ¤«п ®бв «мле
- ¬л ¤ Ґ¬ "ЇҐаҐў®¤" § ЇЁб ®© ўлиҐ Є®¬ ¤л, д®а¬Ёаго饩 в Ў«Ёжг
б гЄ § л¬Ё Є®«®Є ¬Ё (Ёе б®ў®ЄгЇ®бвм ®Ў®§ зҐ Є Є <‘ЇЁб®Є Ї®«Ґ©>):
‚›ЃђЂ’њ<‘ЇЁб®Є Ї®«Ґ©> €‡<‘ЇЁб®Є Ѓ„> ѓ„…<“б«®ўЁп бўп§Ё Ѓ„ Ё гб«®ўЁҐ
дЁ«мва жЁЁ § ЇЁбҐ©> ЌЂ Џђ€Ќ’…ђ (¤«п Ј«п¤®бвЁ гб«®ўЁп бўп§Ё ў
ЇаЁ¬ҐаҐ 17.1 § Є«озҐл ў бЄ®ЎЄЁ). •®вп гЄ § ўлў®¤ ЇаЁвҐа,
®¤®ўаҐ¬Ґ® в Ў«Ёж ўлў®¤Ёвбп Ё ¤ЁбЇ«Ґ©.
…б«Ё Ўл ¬л 㤮ў®«мбвў®ў «Ёбм д ¬Ё«Ёп¬Ё Ё ®¬Ґа ¬Ё Є 䥤а,
в Ў«Ёжг ўлў®¤Ё«Ё в®«мЄ® ¤ЁбЇ«Ґ© (нв® Їа®Ёб室Ёв Ї® 㬮«з Ёо), § ЇЁбм
Є®¬ ¤л гЇа®бвЁ« бм Ўл: SELECT Famil, NKaf FROM Dipl WHERE Pr=.F.
„«п § ЇЁбЁ в Ў«Ёжл Є Є ®ў®© Ѓ„ б Ё¬ҐҐ¬ _Dip Є®¬ ¤г а биЁа塞:
SELECT Famil, NKaf FROM Dipl WHERE Pr=.F. INTO DBF _Dip .
‘®§¤ п Ѓ„ ўв®¬ вЁзҐбЄЁ ®вЄалў Ґвбп ў ⥪г饩 а Ў®зҐ© ®Ў« бвЁ.
…б«Ё 㦮, зв®Ўл бва®ЄЁ в Ў«Ёжл Ўл«Ё гЇ®а冷зҐл Ї® Є дҐ¤а ¬,
ў ЇаҐ¤Ґ« е ®¤®© Є 䥤ал - Ї® д ¬Ё«Ёп¬ бв㤥⮢, § ЇЁблў Ґ¬ Є®¬ ¤г
SELECT Famil, NKaf FROM Dipl WHERE Pr=.F. ORDER BY NKaf,Famil .
ЏаЁ¬Ґа 17.2. Ќ ©¤Ґ¬ Ґ¦Ґ¬Ґбпзго нЄ®®¬Ёо бвЁЇҐ¤Ё «м®Ј® 䮤
Ї® Є ¦¤®© Є 䥤ॠЇаЁ ®взЁб«ҐЁЁ ҐгбЇҐў ойЁе ¤ЁЇ«®¬ЁЄ®ў. ЏаЁ¤Ґвбп
гЄ § вм ў <‘ЇЁбЄҐ Ї®«Ґ©> ®¤г Ё§ "ўҐавЁЄ «мле" (ЇаЁ¬ҐпҐ¬ле Є Є®«®ЄҐ) дгЄжЁ©
- б㬬Ёа®ў ЁҐ: Sum(Stipa), Ј¤Ґ Stipa - Ї®«Ґ Ѓ„ б а §¬Ґа®¬ бвЁЇҐ¤Ё©.
Њл гЄ §лў Ґ¬ ҐҐ ў бЇЁбЄҐ ўлў®¤Ё¬ле Ї®«Ґ©.
‚ в Ў«ЁжҐ ¤«п Є ¦¤®© Є 䥤ал б ҐгбЇҐў ойЁ¬Ё ¤ЁЇ«®¬ЁЄ ¬Ё г¦ ®¤
бва®Є б Ёв®Ј®¬ б㬬Ёа®ў Ёп. ’ Є®Ґ ЈагЇЇЁа®ў ЁҐ ®ЎҐбЇҐзЁў Ґв ваЁЎгв
GROUP BY NKaf. ‘ва®ЄЁ ¬л гЇ®а冷稬 Ї® ®¬Ґа ¬ Є 䥤а:
SELECT NKaf, Sum(Stipa) FROM Dipl WHERE Pr=.F. GROUP BY NKaf ORDER BY
NKaf.
€в Є, Є®¬ ¤ SELECT б ¬ ®вЄалў Ґв Ѓ„, Ї®¤ЎЁа Ґв Ё«Ё ᮧ¤ Ґв
Ґ®Ўе®¤Ё¬лҐ Ё¤ҐЄбл, ®аЈ Ё§гҐв бўп§м Ѓ„, дЁ«мвагҐв, ЈагЇЇЁагҐв Ё
®Ўа Ў влў Ґв § ЇЁбЁ, § Єалў Ґв Ѓ„, гЁз⮦ Ґв ўаҐ¬ҐлҐ д ©«л. ЏаЁ
ҐҐ ўлЇ®«ҐЁЁ ўв®¬ вЁзҐбЄЁ ЁбЇ®«м§гҐвбп вҐе®«®ЈЁп Rushmore.
Ѓ„-Ёбв®зЁЄЁ Ё ®ў п Ѓ„, Ґб«Ё ® ᮧ¤ Ґвбп, ®бв овбп ®вЄалвл¬Ё
Ї®б«Ґ ўлЇ®«ҐЁп SELECT. Ќ®ў п Ѓ„ ЄвЁў . …б«Ё Їа®Ја ¬¬ Їа®¤®«¦ Ґв
а Ў®вг б нвЁ¬Ё Ѓ„ Ї®б«Ґ ўлЇ®«ҐЁп SELECT, Їа®йҐ ўбҐЈ® § Єалвм ўбҐ
д ©«л (CLOSE ALL) Ё«Ё ўбҐ Ў §л (CLOSE DATABASES), Ґ®Ўе®¤Ё¬лҐ
- ў®ўм ®вЄалвм. ’®Ј¤ Ґ ЇаЁ¤Ґвбп а §ЎЁа вмбп б ЁбЇ®«м§гҐ¬л¬Ё
а Ў®зЁ¬Ё ®Ў« бвп¬Ё.
Њл а бᬮв५Ё б«гз Ё ᮥ¤ЁҐЁп Ёб室ле в Ў«Ёж (Ѓ„) "Ї®
Ј®аЁ§®в «Ё". ‘®Ґ¤ЁҐЁҐ "Ї® ўҐавЁЄ «Ё" (UNION) а бᬮв८ ў Ї. 17.3.
‡ ¤ ЁҐ 17.1. ‚ Ѓ„ Kadr ¤ л ᢥ¤ҐЁп ® б®ваг¤ЁЄ е, ў з бв®бвЁ,
в ЎҐ«млҐ ®¬Ґа , д ¬Ё«ЁЁ Ё ¤ вл § зЁб«ҐЁп ў ив в, ⥫Ґд®л б
в ЎҐ«мл¬Ё ®¬Ґа ¬Ё - ў Ѓ„ Telf. ‚뢥бвЁ Є®¬ ¤®© SELECT ў «д ўЁв®¬
Ї®ап¤ЄҐ д ¬Ё«ЁЁ ( в Є¦Ґ ⥫Ґд®л) б®ваг¤ЁЄ®ў, бв ¦ а Ў®вл Є®в®але
ЇаҐ¤ЇаЁпвЁЁ ба ўпҐвбп б 20, 25, 30, 35 Ј®¤ ¬Ё ў гЄ § ®¬ ¬ҐбпжҐ
⥪г饣® Ј®¤ .
17.2. €§гз Ґ¬ д®а¬л § ЇЁбЁ Є®¬ ¤л SELECT (SQL)
„«п ¤ «мҐ©иҐЈ® Ё§«®¦ҐЁп Ґ®Ўе®¤Ё¬ вҐа¬Ё "Є®«®Є ",
®в®бпйЁ©бп Є д®а¬Ёа㥬®© в Ў«ЁжҐ, ЇаЁ¬Ґа NKaf, Sum(Stipa) - ¤ўҐ
Є®«®ЄЁ (б¬. Є®¬ ¤г SELECT ў ЇаЁ¬ҐаҐ 17.2). Ља®¬Ґ "ўҐавЁЄ «мле"
дгЄжЁ© Sum, Avg (б।ҐҐ аЁд¬ҐвЁзҐбЄ®Ґ), Count (дгЄжЁп-бзҐвзЁЄ),
Min, Max, Є®«®ЄЁ ¬®Јгв Ўлвм § ¤ л ўла ¦ҐЁп¬Ё б ®Ўлзл¬Ё, "Ґ
ўҐавЁЄ «мл¬Ё" дгЄжЁп¬Ё ®в Ї®«Ґ© Ѓ„, ¤Ґ©бвўгойЁ¬Ё ў а ¬Є е ®в¤Ґ«м®©
§ ЇЁбЁ, Ё ¤ ¦Ґ Є®бв в ¬Ё (б¬. ЇаЁ¬Ґа 17.5), дгЄжЁп¬Ё Ї®«м§®ў ⥫п.
‚ "ўҐавЁЄ «мле" ўла ¦ҐЁпе ¬®¦® гЄ §лў вм Ё ҐбЄ®«мЄ® Ї®«Ґ©,
ЇаЁ¬Ґа: Sum(Stipa)/5000, Max(Stipa)-Avg(Stipa) . ЏаЁ¬Ґал
"Ґ ўҐавЁЄ «мле" ўла ¦ҐЁ©: Rtrim(Famil)+" "+ Imya, Str(Stipa,6).
ЋЎп§ ⥫мл «Ёим ¤ўҐ ЇҐаўлҐ б®бв ў«пойЁҐ Є®¬ ¤л SELECT (Ї®б«Ґ
Ґ®Ўп§ ⥫쮣® ваЁЎгв DISTINCT, ЇаҐ¤®вўа й о饣® ўлў®¤ ®¤Ё Є®ўле
бва®Є; ваЁЎгв ALL Їа®вЁў®Ї®«®¦®Ј® б¬лб« ¤Ґ©бвўгҐв Ї® 㬮«з Ёо):
SELECT DISTINCT <‘ЇЁб®Є Є®«®®Є> FROM<‘ЇЁб®Є Ѓ„>.
Џ®а冷Є б«Ґ¤гойЁе б®бв ў«пойЁе Є®¬ ¤л Ґ пў«пҐвбп ¦ҐбвЄЁ¬.
‚ <‘ЇЁбЄҐ Ѓ„> Ґ®Ўп§ ⥫мл© «®Є «мл© ЇбҐў¤®Ё¬ Ѓ„ бв ўпв бЇа ў ®в
Ё¬ҐЁ Ѓ„ Ё ®в¤Ґ«пов ®в ҐЈ® ®¤Ё¬ Ё«Ё ҐбЄ®«мЄЁ¬Ё Їа®ЎҐ« ¬Ё. Џ®« п
§ ЇЁбм н«Ґ¬Ґв <‘ЇЁбЄ Є®«®®Є> Ё¬ҐҐв ўЁ¤
<‹®Є «мл© ЇбҐў¤®Ё¬>.<‚ла ¦ҐЁҐ, ў з бв®бвЁ, Ї®«Ґ Ѓ„> AS<€¬п Є®«®ЄЁ>.
…б«Ё <‘ЇЁб®Є Є®«®®Є> - нв® бЇЁб®Є ўбҐе Ї®«Ґ© гЄ § ле Ѓ„, ҐЈ®
Ї®Є §лў ов § Є®¬ "*". ЏаЁ¬Ґа: SELECT * FROM Dipl WHERE Pr=.F. .
‚®§¬®¦® гЇ®а冷票Ґ Ё ЈагЇЇЁа®ў ЁҐ Ї® Є®«®Є ¬-ўла ¦ҐЁп¬.
ЏаЁ н⮬ ¤®ЇгбвЁ¬®© д®а¬®© гЄ § Ёп Є®«®ЄЁ пў«пҐвбп Ё¬п нв®© Є®«®ЄЁ.
Ља®¬Ґ в®Ј®, ®® б«г¦Ёв ®Ў®§ 票Ґ¬ ®ў®Ј® Ї®«п ў Ѓ„ - ў®§¬®¦®¬
१г«мв ⥠SELECT. ‚ ¤агЈЁе б«гз пе н«Ґ¬Ґв AS<€¬п Є®«®ЄЁ> Ґ 㦥.
Џ® 㬮«з Ёо Ё¬п Є®«®ЄЁ нв®
- <Ё¬п Ї®«п Ѓ„>_<« в.ЎгЄў >, ЇаЁ¬Ґа: NKaf_A, NKaf_B; ЎгЄў
¤®Ў ў«пҐвбп «Ёим ЇаЁ ®¤Ё Є®ўле Ё¬Ґ е Ї®«Ґ© а §ле Ѓ„, § ¤ ойЁе Є®«®ЄЁ;
- <Ё¬п "ўҐавЁЄ «м®©" дгЄжЁЁ>_<Ё¬п Ї®«п>, ЇаЁ¬Ґа: SUM_STIPA;
- <Ё¬п "ўҐавЁЄ «м®©" дгЄжЁЁ>_EXP_<Ї®ап¤Є®ўл© ®¬Ґа> (дгЄжЁп
ЇаЁ¬ҐҐ Ґ Є ®в¤Ґ«м®¬г Ї®«о, Є ўла ¦ҐЁо); ЇаЁ¬Ґа: SUM_EXP_2;
- EXP_<Ї®ап¤Є®ўл© ®¬Ґа Є®«®ЄЁ> (Є®«®Є § ¤ ўла ¦ҐЁҐ¬).
€¬п Є®«®ЄЁ ®ЇаҐ¤Ґ«пҐв ҐҐ § Ј®«®ў®Є ў в Ў«ЁжҐ.
‘®бв ў«пой п Є®¬ ¤л "ЏаЁҐ¬ЁЄ в Ў«Ёжл". ‚ аЁ в "TO"<ЏаЁҐ¬ЁЄ>.
”®а¬л:TO PRINTER (б¬. ЇаЁ¬Ґа ў Ї. 17.1), TO FILE<€¬п д ©« > ADDITIVE
( ваЁЎгв ADDITIVE ®§ з Ґв, зв® в Ў«Ёж ¤®Ў ў«пҐвбп Є ЇаҐ¦Ґ¬г
ᮤҐа¦Ё¬®¬г ASCII-д ©« , Ё зҐ д ©« ЇҐаҐ§ ЇЁблў Ґвбп). Џ а ««Ґ«м®
Їа®Ёб室Ёв ўл¤ з в Ў«Ёжл нЄа , Ї®¤ ў«пҐ¬ п, Ґб«Ё 㦮, ®ЇжЁҐ©
NOCONSOLE. ЏаЁ¬Ґа: TO PRINTER NOCONSOLE. ‚ «оЎ®¬ б«гз Ґ ўл¤ зЁ
нЄа ¤®ЇгбвЁ¬л ®ЇжЁп PLAIN (§ Ј®«®ўЄЁ Є®«®®Є Ґ ўл¤ овбп) Ё ®ЇжЁп
NOWAIT (Ґ Їа®Ёб室Ёв Ї г§л ЇаЁ § Ї®«ҐЁЁ нЄа , Ё¤Ґв "Їа®ЄагвЄ ").
‚ аЁ в "INTO<ЏаЁҐ¬ЁЄ>"; в Ў«Ёж нЄа Ґ ўл¤ Ґвбп. ”®а¬л:
)INTO ARRAY <€¬п ¬ ббЁў >; ¬ ббЁў Ї®¤®ЎҐ ᮧ¤ ў Ґ¬®¬г ў Є®¬ ¤Ґ
COPY TO ARRAY;
Ў)INTO CURSOR<€¬п Љ“ђ‘ЋђЂ - ўаҐ¬Ґ®© Ў §л>, Љ“ђ‘Ћђ ¬®¦Ґв Ўлвм
Ёбв®зЁЄ®¬ ¤ ле ¤«п ¤агЈ®© Є®¬ ¤л SELECT, ҐЈ® Ї®«п ¤®бвгЇл «Ёим
¤«п з⥨п, ЇаЁ¬Ґа, ¬®Јгв Ўлвм гЄ § л ў Є®¬ ¤Ґ BROWSE; § ЄалвЁҐ
Љ“ђ‘ЋђЂ, ЇаЁ¬Ґа, ўл§ў ®Ґ § ўҐа襨Ґ¬ § ¤ зЁ, ўҐ¤Ґв Є ҐЈ® г¤ «ҐЁо;
ў)INTO TABLE<€¬п Ѓ„> Ё«Ё INTO DBF<€¬п Ѓ„> (б¬. ЇаЁ¬Ґа ў Ї. 17.1).
‚ ®¤®© Є®¬ ¤Ґ SELECT Ґ«м§п б®ў¬Ґй вм ў аЁ вл TO Ё INTO.
‘®бв ў«пой п WHERE<“б«®ўЁп бўп§Ё Ѓ„ Ё дЁ«мва жЁЁ> а бᬮвॠў
Ї. 17.1. ђ бᬮваЁ¬ ®Ја ЁзҐЁп Ё ў®§¬®¦®бвЁ. „®ЇгбЄ овбп
¬ Єа®Ї®¤бв ®ўЄЁ. “б«®ўЁп бўп§Ё Ѓ„ ᮥ¤Ёповбп ¬Ґ¦¤г б®Ў®© Ё б
гб«®ўЁҐ¬ дЁ«мва жЁЁ Ґ¤Ёб⢥® ў®§¬®¦®© ®ЇҐа жЁҐ© AND (Ё«Ё .AND.).
‚ гб«®ўЁпе дЁ«мва жЁЁ ¤®ЇгбЄ овбп AND, OR, NOT. €е ®ЇҐа ¤л ¤®«¦л
Ўлвм а ўҐбвў ¬Ё (Ґа ўҐбвў ¬Ё), Ї®н⮬г, § ¬Ґпп Їа®Ја ¬¬г ЇаЁ¬Ґа
16.2, ¬л ўл㦤Ґ® § ЇЁб «Ё ў Є®¬ ¤Ґ а ўҐбвў® Pr =.F. ‚ гб«®ўЁЁ
дЁ«мва жЁЁ ¤®ЇгбвЁ¬л в Є¦Ґ ба ўҐЁп ўЁ¤
- <‚ла ¦ҐЁҐ> LIKE < Ў«®>, ЇаЁ¬Ґа ба ўҐЁҐ Memo-Ї®«п Dosje:
Dosje LIKE "%Ї®ў а%" (¤«п ўлў®¤ д ¬Ё«Ё© Ё "¤®бмҐ" ўбҐе ЎлўиЁе Ї®ў а®ў);
ў < Ў«®Ґ> % ®Ў®§ з Ґв «оЎго Ї®б«Ґ¤®ў ⥫м®бвм бЁ¬ў®«®ў, § Є
Ї®¤зҐаЄЁў Ёп - ҐЄ®в®ал© («оЎ®©) бЁ¬ў®«;
- <‚ла ¦ҐЁҐ> BETWEEN <ЊЁЁ¬ «м®Ґ § 票Ґ>AND<Њ ЄбЁ¬ «м®Ґ § 票Ґ>;
§ 票Ґ .T. ўла Ў влў Ґвбп, Ґб«Ё § 票Ґ <‚ла ¦ҐЁп> 室Ёвбп ў
гЄ § ®¬ ¤Ё Ї §®Ґ;
- <‚ла ¦ҐЁҐ> IN (<‘ЇЁб®Є Є®бв вле ўла ¦ҐЁ©>); § 票Ґ .T.
ўла Ў влў Ґвбп ЇаЁ б®ўЇ ¤ҐЁЁ § 票п <‚ла ¦ҐЁп> б «оЎл¬ Ё§ § 票©
<‘ЇЁбЄ >. ЏаЁ¬Ґа: NOT Fak IN(" 1", " 3"); ўл¤Ґ«повбп § ЇЁбЁ бв㤥⮢,
®Ўгз ойЁебп Ґ д Єг«мвҐв е 1 Ё 3.
Ља®¬Ґ в®Ј®, ў гб«®ўЁЁ дЁ«мва жЁЁ ¬®Јгв ЇаЁ¬Ґпвмбп Єў в®а
бгйҐбвў®ў Ёп EXISTS Ё १г«мв вл ўлЇ®«ҐЁп Ї®¤зЁҐле Є®¬ ¤ SELECT
(б¬. Ї.17.4).
‘®бв ў«пой п ORDER BY <‘ЇЁб®Є Є®«®®Є Ё«Ё Ї®«Ґ© Ѓ„>. ќ«Ґ¬Ґв бЇЁбЄ
¤®«¦Ґ б®Їа®ў®¦¤ вмбп ваЁЎг⮬ DESC (бЇа ў ), Ґб«Ё ў ¤ ®© Є®«®ЄҐ
(Ї® ¤ ®¬г Ї®«о) ¤®«¦Ґ Ўлвм гЎлў ойЁ© Ї®а冷Є. Џ® 㬮«з Ёо
ЇаҐ¤Ї®« Ј Ґвбп ASC (гЇ®а冷票Ґ Ї® ў®§а бв Ёо). ЏҐаўл© н«Ґ¬Ґв
§ ¤ Ґв Ј«®Ў «мл© Ї®а冷Є, Їа®зЁҐ - «®Є «мл© (б¬. Ї. 3.9). ‚ <‘ЇЁбЄҐ>
Є®«®ЄЁ § ¤ ов Ё«Ё Ёе Ё¬Ґ ¬Ё, Ё«Ё Ї®ап¤Є®ўл¬Ё ®¬Ґа ¬Ё. ‘ ¬ п «Ґў п
Є®«®Є Ё¬ҐҐв ®¬Ґа 1.
‘®бв ў«пой п GROUP BY <‘ЇЁб®Є Ё¬Ґ Є®«®®Є Ё«Ё Ї®«Ґ© Ѓ„>. „®ЇгбвЁ¬
«Ёим ®¤Ё га®ўҐм ЈагЇЇЁа®ў Ёп. ЏаЁ¬Ґпп Љ“ђ‘Ћђ Ё ҐйҐ ®¤г Є®¬ ¤г
SELECT, ¬®¦® ўлЇ®«Ёвм ЈагЇЇЁа®ў ЁҐ бва®Є Ў®«ҐҐ ўлб®Є®¬ га®ўҐ Ё
в.¤.(б¬. ЇаЁ¬Ґа 17.4). Џ®«п Ѓ„, Ґ § ¤ ойЁҐ Є®«®ЄЁ в Ў«Ёжл, в Є¦Ґ
¬®Јгв гЇа ў«пвм ЈагЇЇЁа®ў ЁҐ¬ (Ё гЇ®а冷票Ґ¬, ® Ї®б«Ґ¤ҐҐ Ґ
®Ј®ў®аҐ® ў агЄ®ў®¤бвў е).
‘®бв ў«пой п HAVING<“б«®ўЁҐ ўлў®¤ ЈагЇЇл> "а Ў®в Ґв" в®«мЄ® ў Ї аҐ
б GROUP BY Ё § ЇЁблў Ґвбп, Ґб«Ё Ґбвм вॡ®ў ЁҐ, Є®в®а®¬г ¤®«¦
㤮ў«Ґвў®апвм ®жҐЄ ЈагЇЇл, ЇаЁ¬Ґа ҐҐ а §¬Ґа.
ЏаЁ¬Ґа 17.3. “б«®ўЁп ЇаЁ¬Ґа 16.2. „«п «®¦ҐЁп "ива дле б ЄжЁ©"
ўл¤Ґ«повбп Є 䥤ал, Є®в®але Ґ Ї®«гзЁ«Ё § зҐв Ї® ЇаҐ¤¤ЁЇ«®¬®© Їа ЄвЁЄҐ
Ў®«ҐҐ 2 бв㤥⮢. ЏҐз в Ґвбп бЇЁб®Є нвЁе Є 䥤а ( §ў Ёп Ё зЁб«®
ўлиҐгЄ § ле бв㤥⮢ Є 䥤аҐ).
SELECT KNaz, Count(*) FROM Dipl c, Kafedr a GROUP BY c.NKaf ;
WHERE c.NKaf=a.NKaf AND Pr =.F. HAVING Count(*) > 2 TO PRINTER
Ќ бв «® ўаҐ¬п ¤ вм ЇаЁ¬Ґа ЇаЁ¬ҐҐЁп DISTINCT (б¬. ®ЇЁб ЁҐ з «
Є®¬ ¤л). …б«Ё Їа®б⮠㦮 ўлўҐбвЁ ®¬Ґа (Ё«Ё §ў Ёп) Є 䥤а,
Є®в®але е®вп Ўл ®¤Ё ¤ЁЇ«®¬ЁЄ Ґ Ї®«гзЁ« § зҐв Ї® Їа ЄвЁЄҐ, ¬®¦®
®Ў®©вЁбм Ё ЎҐ§ ЈагЇЇЁа®ў Ёп, ЇаЁ¬Ґпп DISTINCT:
SELECT DISTINCT NKaf FROM Dipl WHERE Pr =.F. && ‚лў®¤пвбп ®¬Ґа
SELECT DISTINCT KNaz FROM Dipl c, Kafedr a;
WHERE c.NKaf=a.NKaf AND Pr =.F. && ‚лў®¤пвбп §ў Ёп
‡ ¤ ЁҐ 17.2. ‘®§¤ ©вҐ Ѓ„ Prim б Ї®«п¬Ё Famil Ё Sport (гб«®ўл©
®¬Ґа ўЁ¤ бЇ®ав , Є®в®а®¬г ®в¤ Ґв ЇаҐ¤Ї®з⥨Ґ ЇҐаб® Famil).
‡ зҐЁп Ї®«п Sport ᤥ« ©вҐ Ї®ўв®апойЁ¬Ёбп. ‚ Ѓ„ Ras ¤ ©вҐ б«®ўҐб®Ґ
§ў ЁҐ ўЁ¤ ¤«п Є ¦¤®Ј® ®¬Ґа . 1.‘ Ї®¬®ймо SELECT ўлўҐ¤ЁвҐ §ў Ёп
ўбҐе гЄ § ле ў Ѓ„ Prim ўЁ¤®ў бЇ®ав . ѓагЇЇЁа®ў ЁҐ Ґ ЇаЁ¬Ґпвм.
2. ‚뢥¤ЁвҐ §ў Ёп ўЁ¤®ў бЇ®ав , гЄ § ле ў Prim Ў®«ҐҐ 5 а §.
17.3. €§гз Ґ¬ ЇаЁ¬Ґал ЁбЇ®«м§®ў Ёп SELECT (SQL)
€бЇ®«м§®ў ЁҐ Є®¬ ¤ SQL Ё§Ў ў«пҐв Ї®«м§®ў вҐ«п ®в агвЁле
"вҐеЁзҐбЄЁе" ¬®¬Ґв®ў Їа®Ја ¬¬Ёа®ў Ёп, ®бв ў«пп «Ёим Ј« ўго 楫м:
гзЁвмбп "ўЁ¤Ґвм" бў®Ё § ¤ зЁ ў вҐа¬Ё е Є®¬ ¤ SQL. „«п нв®Ј®
б«Ґ¤гҐв Ё§гзЁвм ¬®Ј®зЁб«ҐлҐ ЇаЁ¬Ґал ЇаЁ¬ҐҐЁп Є®¬ ¤ Ё
ўлЇ®«Ёвм бҐаЁо гЇа ¦ҐЁ© б Ё¬Ё, ў з бв®бвЁ, Ё§¬Ґпп ўе®¤ Ё
ўл室 Є®¬ ¤ SELECT. Џа®ўҐаЁ¬ бў®Ґ Ї®Ё¬ ЁҐ SELECT (SQL) § ¤ зҐ
ЇаЁ¬Ґа 16.1. ” ЄвЁзҐбЄЁ ¤«п ҐҐ аҐиҐЁп ¬ г¦ Є®¬ ¤
SELECT DB1.Famil, DB2.Famil FROM DB1,DB2 WHERE DB1.Famil =<” ¬Ё«Ёп> ;
AND <“б«®ўЁҐ бўп§Ё>,
Ј¤Ґ ў амЁа㥬®Ґ <“б«®ўЁҐ бўп§Ё> ўла ¦ Ґв ᮮ⢥вбвўЁҐ Ёб室®© Ё
ЁбЄ®¬®© (ў DB2) «Ёз®б⥩. ’ҐЄбв нв®Ј® гб«®ўЁп, Є Є Ё <” ¬Ё«Ёп>,
ЇаҐ¤ў аЁвҐ«м® ўў®¤Ёвбп, ў SELECT - ЁбЇ®«м§гҐвбп ¬ Єа®Ї®¤бв ®ўЄ .
Џа®Ја ¬¬ гЇа®й Ґвбп Ё Є ⮬㠦Ґ ¤ Ґв Ґ ®¤Ё, ўбҐ ў®§¬®¦лҐ
ў аЁ вл ®вўҐв , ЇаЁ¬Ґа, гЄ §лў Ґв ўбҐе ¤®®а®ў б Ґ®Ўе®¤Ё¬®©
Ї жЁҐвг <” ¬Ё«Ёп> ЈагЇЇ®© Єа®ўЁ.
ЏаЁ¬Ґа 17.4. ѓагЇЇЁа®ў ЁҐ ¤ўге га®ўпе.
‚ ¤®Ї®«ҐЁҐ Є १г«мв в ¬ ЇаЁ¬Ґа 17.2 ©¤Ґ¬ Ґ¦Ґ¬Ґбпзго нЄ®®¬Ёо
бвЁЇҐ¤Ё «м®Ј® 䮤 Ї® д Єг«мвҐв ¬.
SELECT NKaf, Sum(Stipa) FROM Dipl WHERE Pr =.F. GROUP BY Nkaf ;
ORDER BY NKaf INTO CURSOR Cu && ‘®§¤ Ґвбп Љ“ђ‘Ћђ б 2 Ї®«п¬Ё
SELECT * FROM Cu && ‚лў®¤ ¤ЁбЇ«Ґ© Ёв®Ј®ў Ї® Є дҐ¤а ¬
SELECT NFak, Sum(Sum_Stipa) FROM Kafedr a, Cu WHERE a.NKaf=Cu.NKaf ;
GROUP BY NFak && Џ®«г票Ґ Ё ўлў®¤ Ёв®Ј®ў Ї® д Єг«мвҐв ¬
‚ Ї®б«Ґ¤Ґ© Є®¬ ¤Ґ SELECT ЁбЇ®«м§®ў ® Ё¬п Ї® 㬮«з Ёо
Sum_Stipa Є®«®ЄЁ ў Љ“ђ‘Ћђ…, ® ¬®¦® Ўл«® ў 1-© Є®¬ ¤Ґ SELECT ¤ вм
Sum(Stipa) AS <€¬п Є®«®ЄЁ>, ў 3-© Є®¬ ¤Ґ SELECT § ЇЁб вм
Sum(<€¬п Є®«®ЄЁ>) ў¬Ґбв® Sum(Sum_Stipa).
‘®Ґ¤ЁҐЁҐ в Ў«Ёж "Ї® ўҐавЁЄ «Ё". ЂваЁЎгв UNION. „ л© ваЁЎгв
бўп§лў Ґв Ґ§ ўЁбЁ¬® ўлЇ®«пҐ¬лҐ Є®¬ ¤л SELECT Ё Ї® бгйҐбвўг
ЇаҐ¤бв ў«пҐв б«Ґ¤гойго ®ЇҐа жЁо: ў ®¤®© в Ў«ЁжҐ а §¬Ґй овбп бва®ЄЁ,
ўла Ў®в лҐ ўбҐ¬Ё бўп§ л¬Ё Є®¬ ¤ ¬Ё. ќв® ў®§¬®¦®, в®«мЄ® Ґб«Ё ў
Ў®а е ®¤® Ё в® ¦Ґ зЁб«® Є®«®®Є Ё вЁЇ § 票© ў ЇаҐ¤Ґ« е Є ¦¤®©
б®бв ў®© Є®«®ЄЁ ®¤Ё Є®ў. ’ॡ®ў ЁҐ ®Ў®б®ў ®: ўбЇ®¬Ё¬, зв®
"ЇаЁҐ¬ЁЄ®¬" ¬®¦Ґв Ўлвм Ѓ„. ‡ ¬ҐвЁ¬, зв® Є Ё¬Ґ ¬ Ё а §¬Ґа ¬ Ї®«Ґ©
ЁЄ ЄЁе вॡ®ў Ё© Ґ ЇаҐ¤кпў«пҐвбп.
ЏаЁ¬Ґа 17.5. €¬Ґовбп ¤ўҐ Ѓ„: ) Licey - в Ў«Ёж ®Ўгз Ґ¬ле ў
«ЁжҐҐ ЇаЁ ўг§Ґ, Ў) School - в Ў«Ёж иЄ®«мЁЄ®ў ўлЇгбЄ®Ј® Є« бб
Ї®¤иҐд®© иЄ®«л, § Ё¬ ойЁебп ў Єаг¦ЄҐ ЇаЁ ўг§Ґ. ‚ Ѓ„ Licey
(School) Ґбвм Ї®«Ґ Pr, Єг¤ § ®бЁвбп § 票Ґ .T. ¤«п вҐе
®Ўгз Ґ¬ле, Є®в®алҐ ЇаЁпвл ў ўг§ Ї® १г«мв в ¬ ўлЇгбЄле нЄ§ ¬Ґ®ў
«ЁжҐп (нЄ§ ¬Ґ®ў "Џа®ўҐам ᥡп"). Ќ ¤® Ї®«гзЁвм бў®¤л© бЇЁб®Є
ЇаЁпвле ў ўг§ б гЄ § ЁҐ¬ ў®§«Ґ Є ¦¤®© д ¬Ё«ЁЁ (Ї®«Ґ Famil) б«®ў
"«ЁжҐ©" Ё«Ё "иЄ®« ".
SELECT Famil, "«ЁжҐ©" FROM Licey WHERE Pr =.T. UNION ;
SELECT Famil, "иЄ®« " FROM School WHERE Pr =.T.
Њл ўЇҐаўлҐ ЁбЇ®«м§®ў «Ё Є®«®Єг б Є®бв в®©. Љ®¬ ¤л Ґ§ ўЁбЁ¬л,
Ї®н⮬㠯®«п ў Ёе Ґ гв®зповбп. ЌҐ«м§п Ўл«® Ўл Ї®¬Ґпвм ¬Ґбв ¬Ё
н«Ґ¬Ґвл <‘ЇЁбЄ Є®«®®Є> ў ®¤®© Ё§ Є®¬ ¤: ў б®бв ўле Є®«®Є е
®Є § «Ёбм Ўл § 票п а §®Ј® вЁЇ .
Џ®бв஥ п в Ў«Ёж ўв®¬ вЁзҐбЄЁ гЇ®а冷稢 Ґвбп Ї® <‘ЇЁбЄг
Є®«®®Є>. ‚ 襬 б«гз Ґ нв® ЇаЁў®¤Ёв Є ЇҐаҐ¬ҐиЁў Ёо бва®Є
иЄ®«мЁЄ®ў Ё "«ЁжҐЁбв®ў": Ї®«Ґ Famil Ј« ў®Ґ ЇаЁ гЇ®а冷票Ё.
„®ЎкҐ¬бп ®в¤Ґ«м®Ј® а бЇ®«®¦ҐЁп Ў®а®ў бва®Є иЄ®«мЁЄ®ў Ё
"«ЁжҐЁбв®ў", ¤®Ў ўЁў ORDER BY 2, 1 (гЄ § л ®¬Ґа Є®«®®Є).
„®Ў ў«ҐЁҐ Їа®Ё§ў®¤Ёвбп ў Ї®б«Ґ¤оо Ё§ бўп§ ле Є®¬ ¤.
…б«Ё ўл е®вЁвҐ Ї®бв ўЁвм ўЇҐаҐ¤ иЄ®«мЁЄ®ў, § ЇЁиЁвҐ
ORDER BY 2 Desc, 1 (гЇ®а冷票Ґ Ї® гЎлў Ёо ў Є®«®ЄҐ Є®бв в).
‚ Ї®бв஥®© в Ў«ЁжҐ ўв®¬ вЁзҐбЄЁ ЁбЄ«оз овбп ¤гЎ«ЁЄ вл
бва®Є. …б«Ё ў «ЁжҐҐ Ё ў иЄ®«Ґ ®Ўгз овбп ¤ў €‚ЂЌЋ‚Ђ, ¤гЎ«ЁЄ вл Ґ
ў®§ЁЄ ов, ЁЎ® "€‚ЂЌЋ‚ «ЁжҐ©" Ё "€‚ЂЌЋ‚ иЄ®« " - нв® а §лҐ
бва®ЄЁ. …б«Ё ¤гЎ«ЁЄ вл г¦л, б«Ґ¤гҐв ў Є®¬ ¤Ґ Ї®б«Ґ б«®ў
UNION ¤®ЇЁб вм ваЁЎгв ALL.
‚ б«гз Ґ ᮥ¤ЁҐЁп ҐбЄ®«мЄЁе Є®¬ ¤ ¬®¦® ЁбЇ®«м§®ў вм
бЄ®ЎЄЁ: SELECT ... UNION (SELECT ... UNION ALL SELECT ... ).
UNION ¬®¦Ґв бўп§лў вм Є®¬ ¤л, Ё¬ҐойЁҐ Ї®¤§ Їа®бл, ® Ґ ¬®¦Ґв
бўп§лў вм Ї®¤§ Їа®бл.
ЏаЁ¬Ґа 17.6. €§¬ҐҐЁҐ бвагЄвгал Ё ᮤҐа¦ Ёп Ѓ„.
€¬ҐҐвбп Ѓ„ Gruppa б д ¬Ё«Ёп¬Ё бв㤥⮢ (Ї®«Ґ Famil), ¤ в®© (Data)
Ї®б«Ґ¤Ґ© § йЁвл « Ў®а в®але а Ў®в Ё Є®«ЁзҐбвў®¬ (Kol) § йЁйҐле
а Ў®в. ‘в㤥вл, § йЁвЁўиЁҐ ўбҐ 6 « Ў®а в®але а Ў®в ¤® 21 ¤ҐЄ Ўап
1995 Ј., Ї®«гз ов § зҐв-" ўв®¬ в" Ё ў ®ў®Ґ Ї®«Ґ Itogi § ®бЁвбп
§ 票Ґ "‡Ђ—’…ЌЋ". ‚ § ЇЁбЁ Їа®зЁе бв㤥⮢ § ®бЁвбп "‘„Ђ‚Ђ’њ
‡Ђ—…’".
SELECT Famil, Kol, Data, Iif(Kol=6 .AND. Data < {12/21/95}, ;
"‡Ђ—’…ЌЋ", "‘„Ђ‚Ђ’њ ‡Ђ—…’") AS Itogi FROM Gruppa INTO DBF _Temp
CLOSE DATABASES && „«п б«Ґ¤гойЁе Є®¬ ¤ вॡгҐвбп § Єалвм Ѓ„
ERASE Gruppa.DBF
RENAME _Temp.DBF TO Gruppa.DBF
SELECT * FROM Gruppa && ‚лў®¤ ¤ЁбЇ«Ґ© ᮤҐа¦ Ёп ®Ў®ў«Ґ®© Ѓ„
‡ ¤ ЁҐ 17.3. Ћд®а¬ЁвҐ Ё ®Їа®Ўг©вҐ ®ўл© ў аЁ в Їа®Ја ¬¬л
ЇаЁ¬Ґа 16.1, а бᬮваҐл© ў з «Ґ Ї. 17.3, ®ЎҐбЇҐзЁў § ЇЁбм
१г«мв в®ў ў ASCII-д ©«, Ё¬п Є®в®а®Ј® § ¤ Ґвбп Їг⥬ ўў®¤ .
17.4. €бЇ®«м§гҐ¬ Ї®¤зЁҐлҐ Є®¬ ¤л SELECT.
”гЄжЁЁ Ї®«м§®ў ⥫п
„«п б«гз Ґў, Є®Ј¤ § Їа®б ®б®ўлў Ґвбп १г«мв в е ¤агЈЁе
§ Їа®б®ў (Ї®¤§ Їа®б®ў), вЁЇЁз® Ёе ЇаЁ¬ҐҐЁҐ ў б®бв ўҐ гб«®ўЁ©
дЁ«мва жЁЁ. “¤®Ў®© д®а¬®© пў«пҐвбп § ЇЁбм Ї®¤зЁҐ®© Є®¬ ¤л
SELECT Є Є Їа ў®Ј® ®ЇҐа ¤ а ўҐбвў (Ґа ўҐбвў ) Ё«Ё ®ЇҐа ¤ ў
®ЇҐа жЁЁ IN (б¬. Ї. 17.2). ’ Є п Є®¬ ¤ , § Є«оз Ґ¬ п ў бЄ®ЎЄЁ (),
ўлў®¤ Ґ ®бгйҐбвў«пҐв, ЇаҐ¤бв ў«пҐв १г«мв в § Їа®б . ‚ ҐҐ бЇЁбЄҐ
Є®«®®Є - ўбҐЈ® ®¤ Є®«®Є .
‚ б«Ґ¤гойЁе ЇаЁ¬Ґа е Ўг¤Ґ¬ ббл« вмбп Ѓ„ Student б Ї®«п¬Ё
TabN (в ЎҐ«мл© ®¬Ґа бв㤥в ), Famil (д ¬Ё«Ёп б ЁЁжЁ « ¬Ё), Kurs
(Єгаб ®Ўг票п), Fak (д Єг«мвҐв), SrB (б।Ё© Ў «« бв㤥в ), Bolt.
Љ®а५Ёа®ў лҐ ўлЎ®аЄЁ. ќв®в вҐа¬Ё ЇаЁ¬ҐпҐвбп ў б«гз Ґ,
Є®Ј¤ бва®ЄЁ ў в Ў«Ёжг ўлЎЁа овбп Ї® १г«мв в ¬ ўлЇ®«ҐЁп
Ї®¤зЁҐле Є®¬ ¤ SELECT, ЁбЇ®«м§гойЁе вг ¦Ґ Ёб室го Ѓ„ (Ґ©
б«Ґ¤гҐв ¤ вм а §«ЁзлҐ ЇбҐў¤®Ё¬л ў Ј« ў®© Ё Ї®¤зЁҐле Є®¬ ¤ е).
ЏаЁ¬Ґа 17.7. Џ®¤§ Їа®б б १г«мв ⮬-§ 票Ґ¬.
„«п Є ¦¤®Ј® Єгаб Є ¦¤®Ј® д Єг«мвҐв ўлўҐ¤Ґ¬ в ЎҐ«млҐ ®¬Ґа Ё
д ¬Ё«ЁЁ бв㤥⮢, б।Ё© Ў «« SrB Є®в®але ўлиҐ б।ҐЈ®
аЁд¬ҐвЁзҐбЄ®Ј® § 票© SrB ¤«п ¤ ®Ј® д Єг«мвҐв .
SELECT TabN, Famil, Fak, Kurs FROM Student a ORDER BY Fak, Kurs ;
WHERE SrB >(SELECT Avg(SrB) FROM Student b WHERE a.Fak = b.Fak)
ЋжҐЁвҐ, бЄ®«мЄ® гЇа®й Ґвбп Їа®Ја ¬¬ Ї® ба ўҐЁо б
Ї®б«Ґ¤®ў ⥫мл¬ ЇаЁ¬ҐҐЁҐ¬ ¬®¦Ґбвў Є®¬ ¤ SELECT. ЋЎа вЁвҐ
ўЁ¬ ЁҐ в®, зв® ў Ї®¤зЁҐ®© Є®¬ ¤Ґ ЈагЇЇЁа®ў Ёп Ґв, ЁЎ®
¤«п Є®ЄаҐв®Ј® ба ўҐЁп вॡгҐвбп ®¤® § 票Ґ Ї®¤§ Їа®б ,
ЁбЇ®«м§го饣® Ґ®Ўе®¤Ё¬го дЁ«мва жЁо.
Љў в®а бгйҐбвў®ў Ёп. Џ®¤ўла ¦ҐЁҐ гб«®ўЁп дЁ«мва жЁЁ
EXISTS (<Џ®¤зЁҐ п Є®¬ ¤ SELECT>),
Ј¤Ґ EXISTS - в Є §лў Ґ¬л© Єў в®а бгйҐбвў®ў Ёп, ¤ Ґв § 票Ґ .T.
«Ёим ў б«гз Ґ ҐЇгбв®© в Ў«Ёжл - १г«мв в Ї®¤зЁҐ®© Є®¬ ¤л SELECT.
— йҐ ўбҐЈ® EXISTS ЁбЇ®«м§гҐвбп б ®ваЁж ЁҐ¬ NOT: NOT EXISTS.
Џ®бЄ®«мЄг Ї®¤зЁҐ п Є®¬ ¤ ўлў®¤ Ґ ўлЇ®«пҐв, Ґв б¬лб« ў
¤Ґв «Ё§ жЁЁ <‘ЇЁбЄ Є®«®®Є>, § ЇЁблў Ґ¬ ў Ґ© Ї®б«Ґ SELECT § Є "*".
ЏаЁ¬Ґа 17.8. ‚뢥¤Ґ¬ гЇ®а冷зҐго Ї® д Єг«мвҐв ¬, ў а ¬Є е
д Єг«мвҐв - Ї® Єгаб ¬ в Ў«Ёжг б Ї®«п¬Ё Famil, Fak, Kurs, ЁбЄ«озЁў
бв㤥⮢ Ї« в®Ј® ®ЎгзҐЁп Ё бв㤥⮢, ЇаЁиҐ¤иЁе ў ўг§ Ї®б«Ґ а¬ЁЁ.
‘ЇЁбЄЁ нвЁе бв㤥⮢ еа пвбп ў Ѓ„ Platn Ё PostAr ᮮ⢥вб⢥®.
‚ нвЁе Ѓ„ - ®¤® Ї®«Ґ TabN. €бЄ®¬го в Ў«Ёжг ўлў®¤Ёв Є®¬ ¤
SELECT Famil, Fak, Kurs FROM Student a ORDER BY Fak, Kurs ;
WHERE NOT EXISTS (SELECT * FROM Platn b WHERE a.TabN = b.TabN) ;
AND NOT EXISTS (SELECT * FROM PostAr c WHERE a.TabN = c.TabN) .
ЋЎа вЁвҐ ўЁ¬ ЁҐ в®, зв® Ѓ„, ®вЄалв п ў 1-© Є®¬ ¤Ґ SELECT,
¤Ґ©бвўгҐв (Є Є Ё ЇбҐў¤®Ё¬ ҐҐ) ў Ї®¤зЁҐле Є®¬ ¤ е SELECT. •®вп
зЁб«® Ёе Ґ ®Ја ЁзҐ®, ¤®ЇгбЄ Ґвбп «Ёим ®¤Ё га®ўҐм Ї®¤зЁҐЁп.
Џ®¤§ Їа®бл б ¬®¦ҐбвўҐл¬ аҐ§г«мв ⮬. ‚ аЁ вл: ALL
(§ ¬ бЄЁа®ў п «®ЈЁЄ "€"), ANY Ё«Ё SOME («®ЈЁЄ "€‹€"). “Є § лҐ б«®ў
бв ўпвбп ў гб«®ўЁҐ Ї®б«Ґ § Є а ўҐбвў (Ґа ўҐбвў ) ¤® Ї®¤§ Їа®б .
ЏаЁ¬Ґа 17.9. Ќ ©¤Ґ¬ бв㤥⮢, Їа®Ё§®бпйЁе ў ¬Ёгвг Ґ ¬ҐмиҐ
б«®ў, 祬 Є ¦¤ п Ё§ бв㤥⮪ (§ ¤ з -игвЄ ). —Ёб«® б«®ў ЇаҐ¤бв ў«пҐв
Ї®«Ґ Bolt. ‚ᥠбва®ЄЁ Ї®¤§ Їа®б (ў Ґ¬ дЁЈгаЁагов бв㤥⪨) ¤®«¦л
室Ёвмбп ў § ¤ ®¬ ®в®иҐЁЁ б® бва®Є®© бв㤥⠤«п в®Ј®, зв®Ўл
® Ўл« ўлЎа :
SELECT Famil FROM Student WHERE Pol ="Њ" AND
Bolt >= ALL (SELECT Bolt FROM Student WHERE Pol ="†")
” ¬Ё«ЁЁ ®бв ўиЁебп бв㤥⮢ ¬®¦® Ї®«гзЁвм Ё ЎҐ§ ЇаЁ¬ҐҐЁп NOT Є
гЄ § ®¬г ўлиҐ гб«®ўЁо дЁ«мва жЁЁ:
SELECT Famil FROM Student WHERE Pol ="Њ" AND
Bolt < ANY (SELECT Bolt FROM Student WHERE Pol ="†")
‡¤Ґбм ANY ®Ў®§ з Ґв ¤®бв в®з®бвм Ё ®¤®© бва®ЄЁ Ї®¤§ Їа®б ,
室п饩бп ў § ¤ ®¬ ®в®иҐЁЁ "¬ҐмиҐ".
Џ®«м§®ў ⥫мбЄЁҐ дгЄжЁЁ (Џ”) ў SELECT. ‘®¤Ґа¦ ЁҐ Є®«®ЄЁ
д®а¬Ёа㥬®© в Ў«Ёжл ¬®¦® ®ЇаҐ¤Ґ«пвм б«®¦л¬, ¤ ¦Ґ гб«®ўл¬ (ЇаЁ¬Ґа
17.6), ўла ¦ҐЁҐ¬. ЏаЁ б«ЁиЄ®¬ б«®¦ле ўла ¦ҐЁпе Ј«п¤®бвм Є®¬ ¤л
вҐапҐвбп. ќв® ®¤ Ё§ ў®§¬®¦ле ЇаЁзЁ ўлҐбҐЁп ўлзЁб«ҐЁ© ў Џ”.
ЋЁ ¬®Јгв Ўлвм ЁвҐа жЁ®л¬Ё (ўлЇ®«повбп ў жЁЄ«Ґ); в ЄЁҐ а бзҐвл Ґ
§ ЇЁблў овбп ў SELECT Їаאַ.
ЏаЁ¬Ґа 17.10. ‚ Ѓ„ Postav Ё¬Ґовбп Ї®«п Cena (жҐ Ґ¤ЁЁжл в®ў а ),
Name (ҐЈ® §ў ЁҐ), Kol (зЁб«® Ґ¤ЁЁж ў Ї авЁЁ в®ў а ). ‚뢥¤Ґ¬
в Ў«Ёжг б гЄ § ЁҐ¬ бв®Ё¬®бвЁ Ї авЁЁ Є ¦¤®Ј® в®ў а , ўлзЁб«пҐ¬®©
б«Ґ¤гойЁ¬ ®Ўа §®¬:
- Ґб«Ё Kol ў ЇаҐ¤Ґ« е б®вЁ - Cena*Kol;
- Ґб«Ё Kol ў ЇаҐ¤Ґ« е влбпзЁ (Ў®«миҐ б®вЁ) - 0.95*Cena*Kol;
- Ґб«Ё Kol ў ЇаҐ¤Ґ« е 10000 (Ў®«миҐ влбпзЁ) - 0.95*0.95*Cena*Kol
Ё в.¤. (жҐ Ґ¤ЁЁжл в®ў а 㬥ми Ґвбп ў ЈҐ®¬ҐваЁзҐбЄ®© Їа®ЈаҐббЁЁ).
SELECT Name, Cena, Kol, F(Cena, Kol) FROM Postav
FUNCTION F
PARAM Cena, Kol, Z && Z - Ґ Ї а ¬Ґва
Z = Cena*Kol
Kol = Kol/100
DO WHILE Int(Kol) # 0
Z = Z* 0.95
Kol = Kol/10
ENDDO
RETURN Z
‘гйҐбвўгҐв Ё ҐЁвҐа жЁ®л© ў аЁ в а бзҐв бв®Ё¬®бвЁ Ї авЁ©.
‘«®¦лҐ Џ” ў Є®¬ ¤Ґ SELECT § ¬Ґ¤«пов а Ў®вг, Ї®н⮬㠨е
б«Ґ¤гҐв ЇЁб вм ЂбᥬЎ«ҐаҐ Ё«Ё ‘Ё. ‘«Ґ¤гҐв гзЁвлў вм Ё
®Ја ЁзҐЁп. …¤ЁбвўҐл© Їгвм ЇҐаҐ¤ зЁ § 票© ў Џ” - бЇЁб®Є
аЈг¬Ґв®ў. ‘®§¤ ў Ґ¬ п ў SELECT ®ЇҐа жЁ® п б। Ѓ„ "ҐЇа®§а з "
Ё Џ”, а Ў®в ой п б Ѓ„, Їа ЄвЁзҐбЄЁ Ґ ¬®¦Ґв ҐҐ ®ЇЁа вмбп.
Џ®ЇлвЄЁ гЇа ў«пвм б।®© Ё§ Џ” - аЁбЄ®ў л. „ ¦Ґ Ґб«Ё ¬Ґв®¤®¬
"Їа®Ў Ё Ї®Їлв®Є" Ї®«гзҐ ¤Ґ©бвўгойЁ© ў аЁ в, ® ¬®¦Ґв бв вм
ҐЇаЁЈ®¤л¬ ў б«Ґ¤го饩 ўҐабЁЁ FOXPRO, ЁЎ® ®ЇвЁ¬Ё§ в®а, ®в
Є®в®а®Ј® § ўЁбЁв гЇа ў«ҐЁҐ б।®© ў SELECT, Ї®бв®п®
б®ўҐаиҐбвўгҐвбп.
‡ ¤ ЁҐ 17.4. ‚®бЇ®«м§г©вҐбм Ѓ„ Student Ё ᮧ¤ ©вҐ Ѓ„ Tel, ў
Є®в®а®© ¤ л ⥫Ґд®л ҐЄ®в®але бв㤥⮢ Ё Ёе в ЎҐ«млҐ ®¬Ґа .
‚뢥¤ЁвҐ д ¬Ё«ЁЁ бв㤥⮢, Ґ Ё¬ҐойЁе ⥫Ґд® , ЁбЇ®«м§гп Єў в®а
бгйҐбвў®ў Ёп.
17.5. ‘®§¤ Ґ¬, ¬®¤ЁдЁжЁа㥬 Ё ¤®Ї®«пҐ¬ Ў §л ¤ ле ў SQL
Љ®¬ ¤л SQL "Ё§Ўлв®зл" ў п§лЄҐ FOXPRO, п§лЄ гЁўҐаб «Ґ Ё ЎҐ§ Ёе.
’ Є®ў Ё Є®¬ ¤ ᮧ¤ Ёп Їгбв®© Ѓ„, ў Є®в®а®© ®ЇаҐ¤Ґ«Ґ ҐҐ бвагЄвга :
CREATE DBF <€¬п Ѓ„> (<‘ЇЁб®Є ®ЇЁб Ё© Ї®«Ґ©>) ,
Ј¤Ґ <®ЇЁб ЁҐ Ї®«п> Ё¬ҐҐв ўЁ¤ <€¬п Ї®«п> <’ЁЇ> (<ђ §¬Ґа Ї®«п>,<—Ёб«®
¤а®Ўле а §а冷ў>), Ј¤Ґ <’ЁЇ> - ®¤ Ё§ ЎгЄў C,N,F,D,L,M (ЎҐ§ Є ўл祪),
®в¤Ґ«пҐ¬ п ®в Ё¬ҐЁ Їа®ЎҐ«®¬. <ђ §¬Ґа Ї®«п> Ґ 㦥 ў ®ЇЁб ЁЁ Ї®«Ґ©
вЁЇ D,L,M, Ї®б«Ґ¤Ё© н«Ґ¬Ґв § ¤ ов «Ёим ¤«п зЁбҐ«.
ЏаЁ¬Ґа 17.11. ‘®§¤ Ґ¬ Ѓ„ Student (б¬. Ї. 17.3):
CREATE DBF Student(TabN C(4), Famil C(30), Kurs C(1), Fak C(2), SrB N(3,1),
Bolt N(3,0) ). ЋжҐЁвҐ б ¬Ё 㤮Ўбвў® ¤ ®© Є®¬ ¤л.
‚ аЁ в Є®¬ ¤л CREATE DBF <€¬п Ѓ„> FROM ARRAY<€¬п ¬ ббЁў >
ЁбЇ®«м§гҐв ¬ ббЁў ў Є зҐб⢥ ®ЇЁб Ёп бвагЄвгал (б¬. Afields() ў Ї. 3.1).
ЏаЁ¬Ґа 17.12. „®Ў ўЁ¬ ў Ѓ„ Student Ї®«Ґ Proc - Їа®жҐв ўлЇ®«ҐЁп
Ја дЁЄ (®Є®з ЁҐ Їа®Ја ¬¬л ᤥ« ©вҐ Ї® ®Ўа §жг ЇаЁ¬Ґа 17.6):
USE Student
N = AFields(Stru)+1 && N - зЁб«® Ї®«Ґ© Ѓ„, 㢥«ЁзҐ®Ґ 1
DECLARE Stru[N,4] && Њ ббЁў ®ЇЁб ў®ўм б 㢥«ЁзҐЁҐ¬ зЁб« бва®Є
Stru[4,1] = "Proc"
Stru[4,2] = "N"
Stru[4,3] = 2
Stru[4,4] = 0 && ‡ Є®зҐ® ®ЇЁб ЁҐ ®ў®Ј® Ї®«п Proc
CREATE DBF _Temp FROM ARRAY Stru && ЋвЄалў Ґвбп Їгбв п Ѓ„ _Temp
APPEND FROM Student && Ѓ„ _Temp Ї®«пҐвбп ¤ л¬Ё Ѓ„ Student
* “¤ «ЁвҐ Ѓ„ Student Ё ЇҐаҐЁ¬Ґг©вҐ _Temp ў Student, Є Є ў ЇаЁ¬ҐаҐ 17.6.
ѓ®а §¤® "н«ҐЈ ⥥" ўлЇ®«пҐв ⥠¦Ґ ¤Ґ©бвўЁп б«Ґ¤гой п Є®¬ ¤ SELECT:
SELECT *, 00 AS Proc FROM Student INTO DBF _Temp .
”®а¬ в ®ў®© Є®«®ЄЁ (®ў®Ј® Ї®«п Ѓ„) Ё вЁЇ ¬л Ї®Є § «Ё Є®бв в®© 00,
Є®в®а п § ®бЁвбп ў ®ў®Ґ Ї®«Ґ Proc ўбҐе § ЇЁбҐ© Ѓ„ _Temp.
‡ ЇЁб ў +00.000, ¬л "§ Ї б«Ё" Ўл ¬Ґбв® ¤«п § Є Ё 3 а §а冷ў ¤а®ЎЁ.
ЏаЁ ¤®Ў ў«ҐЁЁ бЁ¬ў®«м®Ј® Ї®«п 㦮 § ЇЁб вм ў SELECT Є®«®Єг
Space(N), Ј¤Ґ N - а §¬Ґа Ї®«п, ¤«п Ї®«п-¤ вл - Їгбвго ¤ вг { / / }.
ЏаЁ¬Ґа 17.13. Ќ ®б®ўҐ бвагЄвгал Ѓ„ Kadr ᮧ¤ ¤Ё¬ Їгбвго Ѓ„
NewKadr,¤®Ў ўЁў Ї®«п ¤ в InDate, OutDate Ё бЁ¬ў®«м®Ґ Ї®«Ґ CvetGlaz
а §¬Ґа®¬ 15:
SELECT *, {//} AS InDate, {//} AS OutDate, Space(15) AS CvetGlaz;
FROM Kadr WHERE .F. && ‡ 票Ґ .F. § ЇаҐй Ґв ўлЎЁа вм § ЇЁбЁ
ЏаЁ¬Ґа 17.14. ‘®§¤ ¤Ё¬ Їгбвго Ѓ„ ®б®ўҐ бвагЄвга Ў § BD1,BD2:
SELECT * FROM BD1,BD2 WHERE .F. && ЌҐ ў®§Ўа пҐвбп ¤®Ў ў«пвм Ї®«п
ЏаЁ¬Ґз ЁҐ. …б«Ё ў Ёб室ле Ѓ„ Ё¬Ґовбп Ї®«п б ®¤Ё Є®ўл¬Ё
§ў Ёп¬Ё <€¬п>, ў ®ў®© Ѓ„ ў®§ЁЄгв Ї®«п б Ё¬Ґ ¬Ё <€¬п>_A, <€¬п>_B.
„®ЎЁвмбп ўЄ«озҐЁп ®¤®Ј® Ё§ Ёе ¬®¦® «Ёим пў®© § ЇЁбмо бЇЁбЄ
Є®«®®Є. Ђ«мвҐа вЁў : ¬бЄ«озЁвм ў Ѓ„ «ЁиЁҐ Ї®«п Ё гЎа вм «ЁиҐҐ
®Є®з ЁҐ Ё¬ҐЁ Ї®§¤ҐҐ зҐаҐ§ ЁвҐа䥩б.
…б«Ё Ґ®Ўе®¤Ё¬® гбҐзҐЁҐ бвагЄвгал Ѓ„, ў SELECT ЇҐаҐзЁб«повбп
®бв ойЁҐбп Ї®«п (Ё ¤®Ў ў«повбп Є®«®ЄЁ, Ґб«Ё г¦л ®ўлҐ Ї®«п). ќв®в
ў аЁ в Їа®йҐ Їа®Ја ¬¬л, ЁбЇ®«м§го饩 CREATE DBF. ‘«Ґ¤®ў ⥫м®,
ўв®а п ҐҐ а §®ўЁ¤®бвм Їа ЄвЁзҐбЄ®© 楮бвЁ Ґ Ё¬ҐҐв.
„®Ї®«ҐЁҐ Ѓ„ ®ў®© (ҐЇгбв®©) § ЇЁбмо ўлЇ®«пҐв Є®¬ ¤
INSERT INTO <€¬п Ѓ„>(<‘ЇЁб®Є Ї®«Ґ©>) VALUES(<‘ЇЁб®Є ўла ¦ҐЁ© -
§ 票© Ї®«Ґ©>) . ЌҐгЄ § лҐ Ї®«п Ґ § Ї®«повбп § 票ﬨ.
‚ аЁ в Є®¬ ¤л INSERT INTO <€¬п Ѓ„> FROM <€бв®зЁЄ>,
Ј¤Ґ <€бв®зЁЄ> - нв® ARRAY<€¬п ¬ ббЁў > Ё«Ё MEMVAR (б¬. Ї. 15.5),
§ Ї®«пҐв ®ўго § ЇЁбм § 票ﬨ, ў§пвл¬Ё Ё§ ¬ ббЁў Ё«Ё (MEMVAR) Ё§
ЇҐаҐ¬Ґле, ®¤®Ё¬Ґле б Ї®«п¬Ё Ѓ„. …б«Ё ¤«п Є Є®Ј®-«ЁЎ® Ї®«п в Є®©
ЇҐаҐ¬Ґ®© Ґв, ®® Ґ § Ї®«пҐвбп.
„®Ї®«пҐ¬ п Ѓ„ ®вЄалў Ґвбп, Ґб«Ё а ҐҐ Ґ Ўл« ®вЄалв , Ё ®бв Ґвбп
ЄвЁў®© Ї®б«Ґ ўлЇ®«ҐЁп Є®¬ ¤л INSERT INTO.
‡ ¤ ЁҐ 17.5. ‘ Ї®¬®ймо SELECT ᮧ¤ ©вҐ Ѓ„, ў бвагЄвгаг Є®в®а®©
ЇҐаў® з «м® ў®©¤г⠢ᥠЇ®«п гЄ § ле ў ¬Ё ¤ўге Ѓ„, ЁбЄ«о票Ґ
Ї®«Ґ©, ®ЇаҐ¤Ґ«Ґле ў ¬Ё Є Є "Ґг¦лҐ", ўлЇ®«ЁвҐ зҐаҐ§ бЁб⥬®Ґ
¬Ґо (н«Ґ¬Ґв Delete ў ®ЄҐ Modify structure, ўлЇ®«пҐ¬л© ¦ вЁҐ¬
Ctrl+D ў ¬®¬Ґв, Є®Ј¤ ¬ аЄҐа ўҐ¤Ґ ЁбЄ«оз Ґ¬®Ґ Ї®«Ґ).
„®Ї®«ЁвҐ Ѓ„ ®ўл¬Ё § ЇЁбп¬Ё б Ї®¬®ймо INSERT INTO.
‡ЂЉ‹ћ—…Ќ€… Љ ѓ‹Ђ‚… 17
€бЇ®«м§гп Є®¬ ¤г SELECT ¤«п ўлЎ®аЄЁ Ё ®Ўа Ў®вЄЁ ¤ ле, ўл
б®Єа вЁвҐ бў®Ё Їа®Ја ¬¬л, гбЄ®аЁвҐ Ёе а Ў®вг Ё, зв® Ґ¬ «®ў ¦®,
Ўг¤ҐвҐ ¤Ґ« вм ¬ҐмиҐ вҐеЁзҐбЄЁе ®иЁЎ®Є. ‚ FOXPRO ¤«п д®а¬Ёа®ў Ёп
§ Їа®б®ў ў ЁвҐа ЄвЁў®¬ ०Ё¬Ґ ЇаҐ¤гᬮв८ бЇҐжЁ «м®Ґ б।бвў®
RQBE, ўл§лў Ґ¬®Ґ б Ї®¬®ймо ЇгЄв Create Ї®¤¬Ґо File.
Соседние файлы в папке материалы по FoxPro