PHP рдореЗрдВ LINQ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ
рдкреЛрд╕реНрдЯ рджреЗрдЦрдиреЗ рдХреЗ
рдмрд╛рдж , рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкрдиреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдкреВрд░реНрдг LINQ рд╕реЗ рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рддрдХрдиреАрдХ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдХрдореАред
рдХреНрдпреЛрдВ?
рдореЗрд░реА рдЧрддрд┐рд╡рд┐рдзрд┐, рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдмрд╣реБрдд рдирд╣реАрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдИрдПрд╡реА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдореЙрдбрд▓ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рд┐рд░реНрдл рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
рдИрдПрд╡реА рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ "рд░рд┐рдХреЙрд░реНрдб" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдкрд░реАрдд рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
SELECT field_1, field_2, field_3 FROM object
рдФрд░ рдИрд╡ рдореЗрдВ
SELECT f1.value_bigint, f2.value_bigint, f3.value_bigint FROM objects ob, attributes_values f1, attributes_values f2, attributes_values f3 WHERE ob.ID_type="object" AND f1.ID_object = ob.ID_object AND f1.ID_attribute = 1 AND f2.ID_object = ob.ID_object AND f2.ID_attribute = 2 AND f3.ID_object = ob.ID_object AND f3.ID_attribute = 3
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ - рдЕрдВрддрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХрдИ рд╡рд╕реНрддреБрдПрдВ рд░рд┐рд╢реНрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдЗрд╕реА рддрд░рд╣ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИрдВред
рдХреНрд╡реЗрд░реА рдЬрдирд░реЗрдЯрд░
рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдЦрд░рд╛рдм рдкрдардиреАрдп рдиреВрдбрд▓реНрд╕ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ 50% - 70% рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдерд╛ред рдлрд┐рд░ рдЕрдкрдиреЗ рдЖрдк рдПрдХ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ред рддреЛ IQB - рдЗрд░реЛ рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред рдЗрд╕рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ рдХрд┐ рдХреИрд╕реЗ Drupal рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛рдо рдХрд░рддреА рд╣реИред
IQB рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдХреНрд╡реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
$q = new IQB(); $query = $q->from(array(new IQBObject('ob','object'), new IQBAttr('f1',1,INT), new IQBAttr('f2',2,INT), new IQBAttr('f3',3,INT) )) ->where('f1','with','ob')->where('f2','with','ob')->where('f3','with','ob') ->select('f1')->select('f2')->select('f3') ->build();
рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдкрдардиреАрдпрддрд╛, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдмрдврд╝ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕реЗ () рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╢реНрд░реЗрдгреА рдпрд╛ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдирд╛рдо, рдЙрд╕рдХреА рд╕рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рддрд╛рд▓рд┐рдХрд╛ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд╡реЗрд░реА рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЕрдиреНрдп рд╕рднреА рддрд░реАрдХреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░, рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдЦреЛрдЬ рдЖрдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рд╕рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд▓реЗрдирд╛ рд╣реИ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП 4 рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЬрд╣рд╛рдБ () рд╡рд┐рдзрд┐ рдЪрдпрди рдкрд░ рд╢рд░реНрддреЗрдВ рд▓рдЧрд╛рддреА рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ 3 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: рддрд╛рд▓рд┐рдХрд╛ рдЙрдкрдирд╛рдо, рд╕реНрдерд┐рддрд┐, рдореВрд▓реНрдпред рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЙрдкрдирд╛рдо, рдорд╛рди рдпрд╛ рдЙрд╕ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдлрд╝реАрд▓реНрдб рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
$q->where('attr','with','object');
рд╢рд░реНрдд рд▓рдЧрд╛рдУ
attr.ID_object = object.ID_object
рдРрд╕реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ
$q->where('attr','=','object');
рдПрдХ рд╕рдорд╛рди рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
attr.value_bigint = object.ID_object
рдФрд░ рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ () рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ)
attr.value_ntext = "object"
рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ '=', '! =', '> =', '<=', '>', '<', 'рд▓рд╛рдЗрдХ' рдФрд░ 'рд╡рд┐рде' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
рдЪрдпрди () рд╡рд┐рдзрд┐ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ рдорд╛рди рдХреЛ рдЪрдпрди рдореЗрдВ рдЧрд┐рд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк "SUM ($)" рдЬреИрд╕реА рд▓рд╛рдЗрди рдХреЛ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ "рд░реИрдк" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбреЙрд▓рд░ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдб рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЪрдпрди рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдирд╛рдо рд╣реИред
GroupBy () рдФрд░
orderBy () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдпрд╣ рдФрд╕рдд рд░реАрдб рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рддрд░рд╣, рд░рд┐рд╢реНрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЬреАрдм рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрдЪрд╛рд░ рднреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдФрд░ рд╡рд╕реНрддреБ рдмреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рд╡рд╕реНрддреБ рдП рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$q->from(array( new IQBObject('b','B'), new IQBAttr('parent',23,INT), new IQBAttr('child',24,INT) )) ->where('parent','=',123456)
рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рдП рд╕реЗ рдмреА рд╕рд╣рд╛рдпрдХ рд▓реЗ" рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдВрдзрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IQB рдореЗрдВ рдПрдХ
рд▓рд┐рдВрдХреНрдб () рд╡рд┐рдзрд┐ рд╣реИред
рд╡рд┐рдзрд┐ рдПрдХ ID_object рдпрд╛ рдПрдХ рдЬреНрдЮрд╛рдд рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдЙрдкрдирд╛рдо, рдмрдЪреНрдЪреЗ / рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рдПрдХ рдЙрдкрдирд╛рдо рдФрд░ "U- рдзреНрд╡рдЬ" рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рд╕рдВрдХреЗрдд - рдмрдЪреНрдЪреЗ рдХреА рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рдореВрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
$q->from(new IQBObject('b','B'))->linked(123456,'b');
рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдордп-рд╕рдордп рдкрд░ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдЬрдирд░реЗрдЯрд░ рдХреБрдЫ рд╕реАрдорд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдм рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЖрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдЧреБрдг рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
JoinTo () рдкрджреНрдзрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ LEFT JOIN рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИред
рдФрд░ рдХрд╛рдлреА рд╡рд┐рджреЗрд╢реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП
рд░реЙрд╡реНрд╣реЗрдпрд░ () рдФрд░
рд░реЙрд╕реЗрд▓реНрдЯ () рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдХреЗ рдордирдорд╛рдиреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рдЗрд╕рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рд╣реА рдореИрдВрдиреЗ рдирдП рдЕрд╡рд╕рд░ рдкреЗрд╢ рдХрд┐рдПред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдП рдЧрдП рдбрд┐рдЬрд╝рд╛рдЗрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдмреИрд╕рд╛рдЦреА рдХреА рдкрд░рддреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реГрджреНрдзрд┐, рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
IQB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЦрд┐рдВрдЪрд╛рд╡ рдХреЗ рд╕рд╛рде рд▓рдЪреАрд▓рд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдм рдПрдХ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рдЬрдирд░реЗрдЯрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИ, рдЬреЛ рдХреНрд╡реЗрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдкрд╛рддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред