рдЯреИрдореНрдкрд▓реЗрдЯ рд░рд┐рдХреЙрд░реНрдбрд░ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ



рдпрд╣ рдкреЛрд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдФрд░ рдЯреИрдореНрдкреНрд▓рд╛рдЗрдЯрд░ рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдПрдкреНрд▓реАрдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдиреНрд╡рд╛рдпрд░рдореЗрдВрдЯ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреА рд╣реИред

рд╕рднреА рдХрд╛ рд╕реНрд╡рд╛рдж рдЕрд▓рдЧ рд╣реИ ...

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рд╕реНрдХрд▓ (рд╕рдорд╛рди рдкрд╛рд╕реНрдХрд▓), рдмреЗрд╕рд┐рдХ (рд╕рдорд╛рди рдореВрд▓)ред рдЬрд╛рд╡рд╛ рдЬреИрд╕реА рднрд╛рд╖рд╛ рдЖ рд░рд╣реА рд╣реИ рдЬреЛ рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣реА рд╣реИред рд╕рднреА рдкреЛрд╕реНрдЯ рдЙрджрд╛рд╣рд░рдг рдЗрд╕реА рддрд░рд╣ рдХреЗ рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо "рдЖрдВрддрд░рд┐рдХ SQL" рдХрд╣рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреЛрд╕реНрдЯ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреАред

рдбреАрдмреАрдПрдордПрд╕ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ред

рдкреНрд░рддреНрдпреЗрдХ DBMS рдХреЗ рдЕрдкрдиреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ DBMS рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред рдФрд░ рдмрд╕ рд╡рд┐рднрд┐рдиреНрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рд╣реИред

Tmaplatform рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ (рдЖрд╕рд╛рдиреА рд╕реЗ - рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛) рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: MySQL (рдХрд╛рд░реНрдп), PgSQL (рдкрд░реАрдХреНрд╖рдг), MSSQL (рдкрд░реАрдХреНрд╖рдг), SQLite (рдкрд░реАрдХреНрд╖рдг), рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ SQL рднрд╛рд╖рд╛ рдХреА рд╕рднреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЯреНрд░рд┐рдЧрд░реНрд╕, рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рд╕рдВрдХреНрд░рдордг рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЬреЛрдбрд╝реА рдЬреЛ рдХрд┐ SQL92 (SQL рдХреЗ рдореВрд▓ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╕рдорд╛рди рд╣реИред рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрдВрддрд░рд┐рдХ рднрд╛рд╖рд╛ рд╕реЗ рдкреНрд░рдпреБрдХреНрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЖрдкрдХреЛ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреА 100% рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ (рдкреНрд░рддреНрдпрдХреНрд╖ рдХреНрд╡реЗрд░реА) рдХреЛ рдЖрдВрддрд░рд┐рдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЦреЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ 98% рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХрдИ рдЖрджреЗрд╢реЛрдВ рд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдкреНрд░рддреНрдпрдХреНрд╖ рдкреВрдЫрддрд╛рдЫ

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд╢реНрдЪрди рд╕реАрдзреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреЗрдмрд▓, рдлрд╝реАрд▓реНрдб рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рднреА, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред

ClientId := 3; D := (Select Sum(Summa) From Documents Where Client = :ClientId); 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ ClientId рдЪрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рддреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ (рдпрд╣ рдПрдХ рд▓рд╛рд▓ рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░реЗрдЧрд╛)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдордВрдЪ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕, рдлрд╝реАрд▓реНрдб рдирд╛рдо, рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд╕реНрд╡рддрдГ рдкреВрд░реНрдгрддрд╛ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рдЙрдкрд▓рдмреНрдз рд╣реИред

рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реАрдлрд╝реНрд▓реИрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЬрдм рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╡реЗрд░реА " рд╕реЗрд▓реЗрдХреНрдЯ рдП, рдмреА рдлреНрд░реЙрдо рдЯреЗрдмрд▓ " рдХреЛ " рд╕реЗрд▓реЗрдХреНрдЯ рдП, рд▓рд┐рдВрдХрдлрд┐рд▓реНрдб.рдмреА рдлреНрд░реЙрдо рдЯреЗрдмрд▓ 1 " рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ ":" рдкреНрд░рддреАрдХ рдХреЗ рдмрд╛рдж рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рди рдХреЗрд╡рд▓ рдПрдХ рдЪрд░, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

AutoJoin рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА

рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рднреА рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 Select Account.Client.City.Country.Name From Document 

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ, рд╣рдореЗрдВ рдЙрд╕ рджреЗрд╢ рдХрд╛ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╢рд╣рд░ рд╕реНрдерд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╛рдирдХ SQL рдореЗрдВ, рдпрд╣ рдХреНрд╡реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

 Select Countries.Name From Document Left Join Accounts On Accounts.Id = Document.Account Left Join Clients On Clients.Id = Accounts.Client Left Join Cities On Cities.Id = Clients.City Left Join Countries On Countries.Id = Cities.Country 

рд╕рдЪ рд╣реИ, рдЖрд╕рд╛рди рд╣реИ? рдЕрдиреБрд░реЛрдз рдХреА рдорд╛рддреНрд░рд╛ 5 рдЧреБрдирд╛ рдШрдЯ рдЧрдИред рдпреЗ 4 Join block рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдлрд╝реАрд▓реНрдб рдкрд░ рдЖрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 20 рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ? рдареАрдХ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВред

рдПрдХрд▓, рдирдпрд╛ SQL рдХрдорд╛рдВрдб

рдЪрдпрдирдХрд░реНрддрд╛ рдСрдкрд░реЗрдЯрд░ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд), рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

 D := (Select Sum(S) From Documents Where Client=:Client); If D.Count=0 Then S := 0 Else S := D[0].S; 

рд╕рд┐рдВрдЧрд▓ рдСрдкрд░реЗрдЯрд░ рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЧрд▓ рд╡реИрд▓реНрдпреВ (рдкрд╣рд▓реА рд▓рд╛рдЗрди рдХрд╛ рдкрд╣рд▓рд╛ рдХреНрд╖реЗрддреНрд░) рд▓реМрдЯрд╛рддрд╛ рд╣реИред

 S := (Single Sum(S) From Documents Where Client=:Client); 

рдмрд╛рд╣рд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВ

рдЙрдк-рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рдХреНрд╡реЗрд░реА рдХреЛ рдЪрд░ рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдорд╛рддреНрд░рд╛ рдЙрдкрд╢реНрд░реЗрдгреА рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред

 Select Name, (Select Sum(Summa) From Money Where Client=.Id) From Clients Select Name, (Select (Select Sum(Summa) From Money Where Client=..Id)) From Clients 

рдХреНрд╡реЗрд░реА рдЕрдиреБрдХреВрд▓рди

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд░реЛрдз рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐, рд╢рд╛рдпрдж, рди рдХреЗрд╡рд▓ рдЖрдк, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛)ред рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдЕрдиреБрд░реЛрдз рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдВрддрд░рд┐рдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЗрд╖реНрдЯрддрдо рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА DBMS рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдХреНрд╡реЗрд░реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЯреВрд▓ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрдВрддрд░рд┐рдХ рдФрд░ рдмрд╛рд╣рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдЕрдиреБрд░реЛрдз рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

рд╕реЗ рдмрджрд▓реЗрдВ

 Select Name, (Select Sum(Summa) From Documents Where Client=.Id) From Clients 

рд╕реЗ рдмрджрд▓реЗрдВ

 Select Client.Name, Sum(Document.Summa) From Clients, Documents Where Clients.Id=Documents.Client 

рдпрд╣ рдЯреВрд▓ рдЖрдкрдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВ!

рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рд╕реЗрдЯред

рдХреЛрдИ рднреА рдЪреБрдирд┐рдВрджрд╛ рдХреНрд╡реЗрд░реА рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ (рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ) рджреЗрддреА рд╣реИред рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╕рд░рдгреА рдХреЗ рд╕рд╛рдеред

 Dataset := DirectQuery('Select * From mysql.user'); For y:=0 To Dataset.Count-1 Do For x:=0 To Dataset.Columns.Count-1 Do Warning(Dataset[x,y]); 

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдЯрд╛рдЗрдкреНрдб рдбреЗрдЯрд╛рд╕реЗрдЯ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбреЗрдЯрд╛рд╕реЗрдЯ [x, y] рд╡реЗрд░рд┐рдПрдВрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЯрд╛рдЗрдк рдХрдВрдЯреНрд░реЛрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдбреЗрдЯрд╛рд╕реЗрдЯ [x]ред рдлрд╝реАрд▓реНрдбрдирд╛рдоред рдпрд╣реА рд╣реИ, рдЗрдирдкреБрдЯ, рдЖрдЯреЛрдХреНрд▓реЗрдореНрдкрд╢рди рдЖрджрд┐ рдХреЗ рджреМрд░рд╛рди рдЯрд╛рдЗрдк рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 Procedure OnCreate; Var D : Dataset Of Record Id : Integer; CreateDate : DateTime; ClientId : Integer; CountryName : String; End; Begin D := (Select Id, CreateDate, Client, Client.City.Country.Name From Document); Warning(D[2].Name); //     Foreach E in D Do //    Begin Warning(E.Id); //    Warning(E.CountryName); //    End; End; 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдЪрдпрди рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░ред

рд▓реЗрди-рджреЗрди

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБ? рдХрд┐рд╕реА рднреА рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдореЗрдВ рдЦрд╛рддреЗ рд╕реЗ рдкреИрд╕реЗ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рд╣рд░ рдХреЛрдИ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ? :)

 Transaction Begin (Insert Table1 ...) (Insert Table2 ...) End; 

рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдиреНрдп рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рддрдм рддрдХ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд▓реЗрди-рджреЗрди рдмреНрд▓реЙрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдк рдЕрдиреНрдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реЗрди-рджреЗрди рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк рд▓реЗрдирджреЗрди рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 Transaction Continous Read Begin End; 

рдСрдЯреЛ рдЕрдкрдбреЗрдЯ

рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЕрдиреБрд░реЛрдз рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреГрд╢реНрдп (рджреЗрдЦреЗрдВ) рдФрд░ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЙрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ Select triggers рдФрд░ materialized views (view) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдпрджрд┐ DBMS рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред (рдЬреИрд╕реЗ MySQL)ред

рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓

SQL рдХреНрд╡реЗрд░реА рдХреЛ рди рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдкрд░ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 Procedure OnCreate; Var Data : Dataset Of Record ... End; Data1 : Dataset Of Record ... End; Begin ... Data1 := (Select FirstName+' '+LastName, Age From :Data Where Age>20 Order By -Age, Name); ... End; 

рдЙрд╕реА рд╕рдордп, рдЖрдк рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБред

рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЯреНрд░рд┐рдЧрд░ DBMS рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ (T-SQL, PL / SQL, рдЖрджрд┐) рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдордВрдЪ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖ DBMS (рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдкрд╛рда рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд▓рд╕ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдПрдХреАрдХреГрдд рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдкрд╛рд╕реНрдХрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд╛рд╖рд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MySQL) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдЕрдиреБрдорд╛рдирд┐рдд рдФрд░ рджреГрд╢реНрдп рд╣реИред

рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдХреЛрдб рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдФрд░ рдореБрдЦреНрдп рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд┐рдд рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреАред

рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 Procedure Recalc(Curr, Contragent : Integer); Var S, CurrRate, NewCurrRate : Currency; begin Foreach C In (Select Id, DocDate, Sum, Curr, NewSum, NewCurr From Documents Where Curr=:Curr And Contragent=:Contragent) Do Begin CurrRate := GetCurrRate(C.DocDate, C.Curr); NewCurrRate := GetCurrRate(C.DocDate, C.NewCurr); S := RoundDiv(RoundMul(C.Sum, CurrRate, 4), NewCurrRate, 2); If C.Summa <> S Then (Update Documents Set Summa = :S Where Id = :C.Id); End; End; 

рдирд┐рд╖реНрдХрд░реНрд╖ред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рдХрд╛рд╕, рд╕рдордЭ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдпреЗ рдХрд╛рд░рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдЪреБрдирддреЗ рд╕рдордп рдореМрд▓рд┐рдХ рд╣реИрдВред Tmaplatform рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ (рдЕрдкрдиреЗ рдИрдореЗрд▓ рдХреЛ рдкреАрдПрдо рдореЗрдВ рдореБрдЭреЗ ( smirnovss ) рдлреЗрдВрдХреЗрдВ ):
рдорджрдж рдХреЗ рд╕рд╛рде рдордВрдЪ рдХреЗ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, tmaplatform.ru рджреЗрдЦреЗрдВ

Source: https://habr.com/ru/post/In125491/


All Articles