рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

SQL рдореЗрдВ Cartesian Product: рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЧрд╛рдЗрдб

SQL рдореЗрдВ Cartesian products рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдЬрд╛рдиреЗрдВред рдЬрд╛рдиреЗрдВ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдХрдм рдФрд░ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рдЦреЛрдЬреЗрдВред
┬╖ 9 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

Cartesian product SQL рдореЗрдВ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬреЛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рднреА рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓ рднреАред рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭрдирд╛ рдЖрдкрдХреА рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╛рдлреА рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ, рд╣рдо Cartesian products рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреА рдкрдбрд╝рддрд╛рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╡ рдЙрджрд╛рд╣рд░рдг рджреЗрдВрдЧреЗред┬а

рдпрджрд┐ рдЖрдк SQL рдореЗрдВ рдирдП рд╣реИрдВ, рддреЛ рдПрдХ рдордЬрдмреВрдд рдиреАрдВрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ Intermediate SQL рдХреЛрд░реНрд╕ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред рд╕рд╛рде рд╣реА, рдбрд╛рдЙрдирд▓реЛрдб рдпреЛрдЧреНрдп SQL Basics Cheat Sheet рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рдВрджрд░реНрдн рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп SQL рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

Cartesian Product рдХреНрдпрд╛ рд╣реИ?

SQL рдореЗрдВ Cartesian product рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рджреВрд╕рд░реА рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдСрдкрд░реЗрд╢рди рдкреНрд░рд╛рдпрдГ CROSS JOIN рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рджреЛ рдЯреЗрдмрд▓реЛрдВ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдпреБрдЧреНрдореЛрдВ рд╡рд╛рд▓рд╛ рдкрд░рд┐рдгрд╛рдо-рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдпрд╣ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдмрдбрд╝реА рдкрдВрдХреНрддрд┐-рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реА рдЯреЗрдмрд▓реЛрдВ рдкрд░ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реЗ рдкрд░рд┐рдгрд╛рдо-рд╕реЗрдЯ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдбреЗрд╡рд▓рдкрд░ рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реА рдмрд╛рд░ Cartesian product рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХрд┐рд╕реА рдЬреЙрдЗрди рдХрдВрдбреАрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдкрд░ рд╣реА рдЦреЛрдЬрддреЗ рд╣реИрдВтАФрдФрд░ рдЕрдВрддрддрдГ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкрд░рд┐рдгрд╛рдо-рд╕реЗрдЯ рдкрд╛ рдмреИрдарддреЗ рд╣реИрдВред

рдЧрдгрд┐рддреАрдп рдкреГрд╖реНтАНрдарднреВрдорд┐

рдЧрдгрд┐рдд рдореЗрдВ, Cartesian product (A ├Ч B) рд╡рд╣ рд╕рдореБрдЪреНрдЪрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдореБрдЪреНрдЪрдп A рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╡рдпрд╡ рдХреЛ рд╕рдореБрдЪреНрдЪрдп B рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╡рдпрд╡ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рдмрдирд╛рдП рдЧрдП рд╕рднреА рд╕рдВрднрд╡ рдХреНрд░рдордмрджреНрдз рдпреБрдЧреНрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред SQL рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЛ рджреВрд╕рд░реА рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ред

Cartesian product рдЙрджрд╛рд╣рд░рдг.

Cartesian product рдЙрджрд╛рд╣рд░рдгред рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

SQL cross join

SQL рдореЗрдВ cross join рдСрдкрд░реЗрд╢рди рдкрд╣рд▓реЗ рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЛ рджреВрд╕рд░реЗ рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рд╕реЗ рдЬреЛрдбрд╝рдХрд░ Cartesian product рдмрдирд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, cross-join рдбреЗрдЯрд╛ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрдВрдХреНрддрд┐-рд╕рдВрдпреЛрдЬрди рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП SQL рдореЗрдВ cross join рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВ, Students рдФрд░ Courses:

Students рдЯреЗрдмрд▓

namegrade
Alice10
Bob11
Charlie12

Courses рдЯреЗрдмрд▓

courselevel
MathBasic
ScienceAdvanced
HistoryIntermediate

рдирд┐рдореНрди рдХреНрд╡реЗрд░реА рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЫрд╛рддреНрд░ рдХреЛ рд╣рд░ рдХреЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХрд╛ рдЧреНрд░реЗрдб рдФрд░ рдХрдард┐рдирд╛рдИ рд╕реНрддрд░ рджрд┐рдЦрддрд╛ рд╣реИред

-- Perform the cross join to list each student with every course
SELECT Students.name, Students.grade, Courses.course, Courses.level
FROM Students
CROSS JOIN Courses;

SQL рдореЗрдВ cross join рд╕реЗ рдЙрддреНрдкрдиреНрди Cartesian product рдХрд╛ рдЙрджрд╛рд╣рд░рдг

SQL рдореЗрдВ cross join рд╕реЗ рдЙрддреНрдкрдиреНрди Cartesian product рдХрд╛ рдЙрджрд╛рд╣рд░рдгред рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

SQL рдореЗрдВ Cartesian Product рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХрдм рдирд╣реАрдВ

рдЬрдм рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдордЭрдХрд░ рдФрд░ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрд╡рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ SQL рдореЗрдВ Cartesian product рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ-рдкреНрд░рдХрд░рдгреЛрдВ (рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЛрдЦрд┐рдореЛрдВ) рдХреЛ рджреЗрдЦреЗрдВред

рдЙрдкрдпреЛрдЧ-рдкреНрд░рдХрд░рдг

рдирд┐рдореНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдирд╛: рджреЛ рдорд╛рди-рд╕рдореБрдЪреНрдЪрдпреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Cartesian product рдЖрджрд░реНрд╢ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЫреВрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рд╢рд┐рдлреНрдЯреНрд╕ рд╕реЗ рдорд┐рд▓рд╛рдирд╛, рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдпреБрдЧреНрдо рдмрдирд╛рдирд╛ред
  • рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдкрд░рд┐рджреГрд╢реНрдп: рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдЪрд▓рд╛рддреЗ рд╕рдордп, рд╡рд┐рднрд┐рдиреНрди рдкреИрд░рд╛рдореАрдЯрд░-рд╕реЗрдЯреНрд╕ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд┐рд▓рд╛рдХрд░ рд╣рд░ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ Cartesian product рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рд▓реБрдкреНтАНрдд рдбреЗрдЯрд╛ рднрд░рдирд╛: рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдХрд░ рдФрд░ рдлрд┐рд░ рд▓реЗрдлреНрдЯ-рдЬреЙрдЗрди рдХрд░рдХреЗ рд░рд┐рдХреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЯрд╛рдЗрдо-рд╕реАрд░реАрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рд▓рд╛рдкрддрд╛ рддрд┐рдерд┐рдпрд╛рдБ рдкрд╣рдЪрд╛рдирдирд╛ред

рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЛрдЦрд┐рдо

рдпрджреНрдпрдкрд┐ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ Cartesian product рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЗрд╕рдХреЗ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рднреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдБ: рдХреНрдпреЛрдВрдХрд┐ Cartesian product рдПрдХ рдЯреЗрдмрд▓ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреВрд╕рд░реА рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдгрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдмрд╣реБрдд рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдпрд╣ рдзреАрдореА рдХреНрд╡реЗрд░реА, рдЕрддреНрдпрдзрд┐рдХ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдФрд░ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд░реИрд╢ рддрдХ рдХрд░рд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдбреЗрдЯрд╛-рдбреБрдкреНрд▓реАрдХреЗрд╢рди: рдпрджрд┐ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ Cartesian products рдРрд╕реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓реАрдХреЗрдЯ рдпрд╛ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рдЧреЗрдВ, рдЬрд┐рд╕рд╕реЗ рдбреЗрдЯрд╛-рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд┐рдЧрдбрд╝ рд╕рдХрддреА рд╣реИ рдпрд╛ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЕрдкреЗрдХреНрд╖рд┐рдд рди рд╣реЛрдВ рдпрд╛ рдареАрдХ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рди рдХрд┐рдП рдЬрд╛рдПрдБред
  • рдбреАрдмрдЧрд┐рдВрдЧ рдореЗрдВ рдХрдард┐рдирд╛рдИ: рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рдЬреЙрдЗрди рдХрдВрдбреАрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреВрд▓рдирд╛тАФрдРрд╕реЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд Cartesian products inner рдпрд╛ outer join рдХреЗ рдмрдЬрд╛рдп cross join рдХрд░рд╛ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╕реНрд░реЛрдд рдвреВрдБрдврдирд╛ рдФрд░ рд╕реБрдзрд╛рд░рдирд╛ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред

Cartesian Product рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдпрджреНрдпрдкрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЛрдЦрд┐рдореЛрдВ рдХреЗ рдХрд╛рд░рдг Cartesian product рдХрд╛ рд╕рдВрдпрдорд┐рдд рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдХреЛ рдбреЗрдЯрд╛-рддрддреНрд╡реЛрдВ рдХреЗ рд╣рд░ рд╕рдВрднрд╡ рдпреБрдЧреНрдо рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рд╕рдВрдпреЛрдЬрди рдкрд░рд┐рджреГрд╢реНрдп

Cartesian product рд╕рд╛рдкреЗрдХреНрд╖ рдкреНрд░рджрд░реНрд╢рди рдореАрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рдХрд╛рд▓рдиреЗ, рдЕрдиреБрдХреВрд▓рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ, рдпрд╛ рд░реИрдВрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЬрдм рдЖрдкрдХреЛ рджреЛ рдбреЗрдЯрд╛рд╕реЗрдЯреНрд╕ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреА рд╣реЛ, рдЖрдк Cartesian product рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЛ рд╣рд░ рджреВрд╕рд░реЗ рдЖрдЗрдЯрдо рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред┬а

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рд╣рд░ рджреВрд╕рд░реЗ рдХрд░реНрдордЪрд╛рд░реА рд╕реЗ рдХрд░рдиреЗ рд╣реЗрддреБ, Cartesian product рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХрд░реНрдордЪрд╛рд░реА-рдпреБрдЧреНрдо рдмрдирд╛рдПрдЧрд╛:

-- Select two columns with employee names from the Employees table
SELECT 
    A.employee_name AS Employee1,
    B.employee_name AS Employee2
FROM Employees AS A
-- Cross join to create all possible pairs of employees
CROSS JOIN Employees AS B;

рдИ-рдХреЙрдорд░реНрд╕ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдореЗрдВ рднреА рдЙрддреНрдкрд╛рдж-рдЫреВрдЯ рдХреЗ рдкреВрд░реЗ рджрд╛рдпрд░реЗ рдХреА рдкрдбрд╝рддрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Cartesian product рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ Products рдФрд░ Discounts рдЯреЗрдмрд▓ рд╣реИрдВ, рддреЛ cross join рд╕рднреА рдЙрддреНрдкрд╛рдж-рдЫреВрдЯ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ:

-- Select product names and discount types
SELECT 
    Products.product_name,
    Discounts.discount_type
FROM Products
-- Generate all product and discount combinations
CROSS JOIN Discounts;

рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдФрд░ рд╡реИрд▓рд┐рдбреЗрд╢рди

рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Cartesian product рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡реНрдпрд╛рдкрдХ рдкрд░рд┐рджреГрд╢реНрдп-рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди OS, рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреНрд╕ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, cross-join рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рд╕рдВрднрд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рдЦрд╛ рдЬрд╛рдПред

-- Select combinations of operating systems, devices, and browsers
SELECT 
    OS.name AS OperatingSystem,
    Device.name AS Device,
    Browser.name AS Browser
FROM OperatingSystems AS OS
-- All combinations with devices
CROSS JOIN Devices AS Device
-- All combinations with browsers           
CROSS JOIN Browsers AS Browser;

рдбреЗрдЯрд╛ рдкреВрд░реНрдгрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Cartesian product рд▓реБрдкреНтАНрдд рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреИрдирд┐рдХ рдмрд┐рдХреНрд░реА рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рдФрд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рд╣рд░ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореМрдЬреВрдж рд╣реИ, рдЖрдк Products рдФрд░ Dates рдЯреЗрдмрд▓ рдХрд╛ Cartesian product рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдХреНрд░реА рдбреЗрдЯрд╛ рдХреЛ рд▓реЗрдлреНрдЯ-рдЬреЙрдЗрди рдХрд░ рд▓рд╛рдкрддрд╛ рддрд┐рдерд┐-рдЙрддреНрдкрд╛рдж рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

-- Select dates and products with no sales
SELECT 
    Dates.date,
    Products.product_name,
    Sales.sales_amount
FROM Dates
-- Create all date and product combinations
CROSS JOIN Products                          
-- Match sales by date and product
LEFT JOIN 
    Sales ON Dates.date = Sales.date 
           AND Products.product_name = Sales.product_name  
-- Filter for combinations with no sales
WHERE Sales.sales_amount IS NULL;

рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░

рдХреНрдпреЛрдВрдХрд┐ Cartesian products рджреЛ рдЯреЗрдмрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрдЯрд╛-рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдмрдбрд╝реА рдЯреЗрдмрд▓реЛрдВ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди-рд╕рдорд╕реНрдпрд╛рдПрдБ рдЖ рд╕рдХрддреА рд╣реИрдВред рдХреНрд╡реЗрд░реА рдЕрдиреБрдХреВрд▓рди рдФрд░ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛/рджреЗрддреА рд╣реВрдБ рддрд╛рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд░реЗред

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

Cartesian products рд╡рд╛рд▓реА рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рджрдХреНрд╖рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

  • рдЬреЙрдЗрди рд╕реЗ рдкрд╣рд▓реЗ рдкрдВрдХреНрддрд┐-рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ: Cartesian product рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдШрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП cross join рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WHERE рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рд╕реЗ рдкрд░рд┐рдгрд╛рдореА рдбреЗрдЯрд╛рд╕реЗрдЯ рдиреНрдпреВрдирддрдо рд╣реЛред

  • SELECT рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдо рдЪреБрдиреЗрдВ: Cartesian product рдХрд░рддреЗ рд╕рдордп SELECT рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓рдо рд╣реА рдЪреБрдиреЗрдВ рддрд╛рдХрд┐ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдШрдЯреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд░реЗред SELECT * рд╕реЗ рдмрдЪреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдХреЙрд▓рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо-рд╕реЗрдЯ рднрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

  • рд╢рд░реНрддреЗрдВ рд▓рдЧрд╛рдХрд░ Cross Join рдХреЛ Inner Join рдореЗрдВ рдмрджрд▓реЗрдВ: рдпрджрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐-рд╕рдВрдпреЛрдЬрди рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдВ, рддреЛ рдРрд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ INNER JOIN рдЬреИрд╕реА рдХрд╛рд░реНрдп рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рддрдп рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

  • рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ: рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрдХрд░ рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВред рдпрд╣ рдореЗрдореЛрд░реА рдУрд╡рд░рдлреНрд▓реЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖рдХрд░ рдмрдбрд╝реА рдЯреЗрдмрд▓реЛрдВ рдкрд░ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рд╕реБрдзрд╛рд░ рд╕рдХрддрд╛ рд╣реИред

рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкреНрд░рдмрдВрдзрди

Cartesian products рд╕реЗ рдмрдиреЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

  • рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ: рдЕрдХреНрд╕рд░ рдЬреЛрдбрд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреЙрд▓рдореНрд╕ рдкрд░ рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдмрдбрд╝реЗ рдЯреЗрдмрд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ рдкреЗрдпрд░ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд░реЗред рдпрджреНрдпрдкрд┐ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ cross joins рдХреЛ рд╕реАрдзреЗ рддреЗрдЬрд╝ рдирд╣реАрдВ рдХрд░рддреА, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЬрдм рдЖрдк Cartesian product рдХреЛ рдЕрдиреНрдп рдЯреЗрдмрд▓реЛрдВ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ рдЬреЙрдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддрдм рдпрд╣ рдкрдВрдХреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рддреЗрдЬрд╝ рдмрдирд╛рддреА рд╣реИред

  • рдмрдбрд╝реА рдЯреЗрдмрд▓реЛрдВ рдХрд╛ рд╡рд┐рднрд╛рдЬрди (Partitioning): Partitioning Cartesian product рд╡рд╛рд▓реА рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЯреЗрдмрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрд▓рдореНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫреЛрдЯреЗ, рдкреНрд░рдмрдВрдзрдиреАрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ partitions рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред

  • рдкрд░рд┐рдгрд╛рдореА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕реАрдорд┐рдд рдХрд░реЗрдВ: рдЬрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рд╕рддреНрдпрд╛рдкрди рд╣реЗрддреБ рдирдореВрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ LIMIT рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд▓реМрдЯрд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рд░рд╣реЗред

  • рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ: рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ Cartesian product рдХреЛ рдХрдИ рдмрд╛рд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкреБрдирд░реНрдЧрдгрдирд╛ рдШрдЯреЗ рдФрд░ рдЕрдЧрд▓реА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдБ рддреЗрдЬрд╝ рд╣реЛрдВред

рдЕрдиреНрдп рд╕рд╣рд╛рдпрдХ SQL рдСрдкрд░реЗрд╢рдВрд╕

рдЬрд╣рд╛рдБ рдкреВрд░реНрдг Cartesian product рдмрдирд╛рдирд╛ рдХреБрд╢рд▓ рди рд╣реЛ, рд╡рд╣рд╛рдБ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЗ рдореМрдЬреВрдж рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рддрд░реАрдХреЗ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдмреЛрдЭ рдбрд╛рд▓реЗред

Inner рдФрд░ Outer Joins

INNER JOIN рдХреЗрд╡рд▓ рд╡рд╣реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реЛрдВ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрд▓рдореНрд╕ рдореЗрдВ рдореЗрд▓ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдпреЛрдЬрдиреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ Cartesian product рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдмрд╣реБ-рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛рддреА рд╣реИред рдЬрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪрд╛рд╣рд┐рдП рдЬреЛ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирджрдВрдб рдкреВрд░рд╛ рдХрд░рддреА рд╣реЛрдВ, рддрдм inner join рдЙрдкрдпреБрдХреНрдд рд╣реИред┬а

рдиреАрдЪреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, INNER JOIN рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдФрд░ рдЫреВрдЯреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рд╢реНрд░реЗрдгреА рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред

-- Select products and corresponding discounts by category
SELECT 
    A.product_name,
    B.discount_type
FROM Products AS A
-- Match products and discounts by category
INNER JOIN Discounts AS B ON A.category_id = B.category_id;

Outer join (LEFT JOIN, RIGHT JOIN, рдФрд░ FULL JOIN) рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рдФрд░ рди рдорд┐рд▓рддреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдПрдХ рдЯреЗрдмрд▓ рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рджреВрд╕рд░реА рдХреА рдХреЗрд╡рд▓ рдореЗрд▓ рдЦрд╛рддреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВтАФрдкрд░рдВрддреБ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрди рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗтАФрддрдм рдпрд╣ рддрдХрдиреАрдХ рд╕рд╣рд╛рдпрдХ рд╣реИред Outer join рддрдм рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реЗрддреБ рдмрд┐рдирд╛-рдореИрдЪ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдг Cartesian рдкреЗрдпрд░рд┐рдВрдЧ рдирд╣реАрдВред

рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ LEFT JOIN рд╕рднреА рдЙрддреНрдкрд╛рдж рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╡реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдХреЛрдИ рд╕рдВрдмрдВрдзрд┐рдд рдЫреВрдЯ рдирд╣реАрдВ рд╣реИ; рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ NULL рдорд╛рди рдЖрддреЗ рд╣реИрдВред

-- Select products with corresponding discounts, (NULL if no matching discount)
SELECT 
    A.product_name,
    B.discount_type
FROM Products AS A
-- Match products with discounts by category
LEFT JOIN Discounts AS B ON A.category_id = B.category_id;  

рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рдХрдИ рдЯреЗрдмрд▓реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдП, рдпрд╣ рдФрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ DataCamp рдХрд╛ Introduction to SQL Server рдХреЛрд░реНрд╕ рд╕реБрдЭрд╛рддрд╛/рд╕реБрдЭрд╛рддреА рд╣реВрдБред

Subqueries рдФрд░ CTEs

Subqueries рдЖрдкрдХреЛ рдПрдХ рдЯреЗрдмрд▓ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдЪреБрдирдиреЗ рдФрд░ рдЙрд╕реЗ рдореБрдЦреНрдп рдХреНрд╡реЗрд░реА рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрддреА рд╣реИрдВред рдЗрд╕рд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рддрдХ рдбреЗрдЯрд╛ рд╕реАрдорд┐рдд рдХрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкрдВрдХреНрддрд┐-рд╕рдВрдпреЛрдЬрди рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛ рдпрд╛ рдореБрдЦреНрдп рдХреНрд╡реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЗрддреБ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рд╣реЛрдВ, рддрдм subqueries рдЙрдкрдпреЛрдЧреА рд╣реИрдВтАФрдмрд┐рдирд╛ рдкреВрд░реНрдг Cartesian join рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред

рдпрд╣ subquery рдЬреЙрдЗрди рд╕реЗ рдкрд╣рд▓реЗ 10 рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рди рд╡рд╛рд▓реА рдЫреВрдЯреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдШрдЯрддреА рд╣реИ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ cross join рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред

-- Select products with discounts greater than 10 by category
SELECT 
    A.product_name,
    B.discount
FROM Products AS A
-- Subquery to filter discounts over 10
INNER JOIN 
    (SELECT discount, category_id   
     FROM Discounts 
     WHERE discount > 10) AS B
-- Match products with filtered discounts by category
ON A.category_id = B.category_id;   

CTEs, рдпрд╛ WITH рдХреНрд▓реЙрдЬрд╝, рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрдиреЗ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ рдЬреЙрдЗрди рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХрд░ Cartesian products рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдмрд╣реБ-рдЪрд░рдгреАрдп рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВтАФрд╡рд┐рд╢реЗрд╖рдХрд░ рдкреВрд░реНрд╡-рдПрдЧреНрд░реАрдЧреЗрд╢рди рдпрд╛ рдХрдИ рдЬреЙрдЗрдиреЛрдВ рдХреЗ рд╕рд╛рдетАФрдкрд░ рдкреВрд░реНрдг Cartesian рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрдм CTEs рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред

рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА Common Table Expression (CTE) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ 10 рд╕реЗ рдЕрдзрд┐рдХ рдЫреВрдЯреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рд╢реНрд░реЗрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЬреЙрдЗрди рдХрд░рддреА рд╣реИред

-- Filter discounts and join with products by category
WITH FilteredDiscounts AS (
    SELECT discount, category_id
    FROM Discounts
    WHERE discount > 10
)
SELECT 
    A.product_name,
    FD.discount
FROM Products AS A
-- Join with filtered discounts by category
INNER JOIN 
    FilteredDiscounts AS FD ON A.category_id = FD.category_id;

Cartesian Product рдХреЗ рдирд╡рд╛рдЪрд╛рд░реА рдЙрдкрдпреЛрдЧ

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

рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░реА

рдордЬрдмреВрдд рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд┐рдз рдФрд░ рд╡реНрдпрд╛рдкрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред Cartesian products рдлреАрдЪрд░-рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рд╡рд╛рд▓рд╛ рдкреВрд░реНрдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдореЙрдбрд▓ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рд╕реЗ рд╕реАрдЦ рд╕рдХреЗред┬а

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

рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдЬреЗрдирд░реЗрд╢рди

рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд╡реНрдпрд╛рдкрдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЧреЛрдкрдиреАрдпрддрд╛ рдХреА рд░рдХреНрд╖рд╛ рд╣реЗрддреБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Cartesian products рд╡рд┐рд╡рд┐рдз рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рдореБрд▓реЗрд╢рдиреНрд╕ рд╕реЗ рд▓реЗрдХрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдСрдЧреНрдореЗрдВрдЯреЗрд╢рди рддрдХ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред

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

рдиреАрдЪреЗ SQL рдореЗрдВ, рдпреВрдБ рдХрд╣реЗрдВ рдХрд┐, тАЬрдХреБрдЫ рднреА рдирд╣реАрдВтАЭ рд╕реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ CROSS JOIN рд╕реЗ рдЙрд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рджреЗрдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреА рдЯреЗрдмрд▓ рд╣рдорд╛рд░реЗ рдЯреЗрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдЖрдпрд╛рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ рдФрд░ рдЬрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ cross-join рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрди рдорд┐рд▓рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 1: рдХрдИ рдЖрдпрд╛рдореЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди

рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдмрд╛рдЬрд╝рд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐, рдмреНрдпрд╛рдЬ рджрд░реЗрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓реНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рддреНрддреАрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рд┐рдореБрд▓реЗрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдХреЛ Common Table Expression (CTE) рдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдореЗрдВ рд▓рд┐рдЯрд░рд▓ рд╡реИрд▓реНрдпреВрдЬрд╝ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, CROSS JOIN рдЙрдиреНрд╣реЗрдВ рд╣рд░ рд╕рдВрднрд╡ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдорд┐рд▓рд╛ рджреЗрддрд╛ рд╣реИ:

WITH MarketConditions AS (
    SELECT 'Bull' AS condition
    UNION ALL
    SELECT 'Bear'
    UNION ALL
    SELECT 'Sideways'
),
InterestRates AS (
    SELECT 1.5 AS rate
    UNION ALL
    SELECT 2.0
    UNION ALL
    SELECT 3.25
),
CustomerProfiles AS (
    SELECT 'Younger' AS profile
    UNION ALL
    SELECT 'Mid-career'
    UNION ALL
    SELECT 'Retired'
)
SELECT 
    mc.condition,
    ir.rate,
    cp.profile
FROM 
    MarketConditions mc
CROSS JOIN 
    InterestRates ir
CROSS JOIN 
    CustomerProfiles cp;

рдкрд░рд┐рдгрд╛рдо-рд╕реЗрдЯ рдореЗрдВ 3├Ч3├Ч3 = 27 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдмрд╛рдЬрд╝рд╛рд░-рд╕реНрдерд┐рддрд┐, рдмреНрдпрд╛рдЬ рджрд░ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдпреЛрдЬрди рд╣реИред

Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдЬреЗрдирд░реЗрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдгред

Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдЬреЗрдирд░реЗрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдгред рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

рдЙрджрд╛рд╣рд░рдг 2: рд╕реАрдХреНрд╡реЗрдВрд╕ рдпрд╛ рд╕рд╛рдзрд╛рд░рдг VALUES рд╕реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдирд╛рдирд╛

рдПрдХ рдФрд░ рддрдХрдиреАрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЫреЛрдЯреА рдЯреЗрдмрд▓реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ cross-join рдХрд░рдХреЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реЗрдВрдЬ рдпрд╛ рд╕рдордп-рдЕрдВрддрд░рд╛рд▓ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЬрд╛рдПрдБред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджреА рдЧрдИ рдХреНрд╡реЗрд░реА 1 рд╕реЗ 10 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдБ рдмрдирд╛рддреА рд╣реИред

WITH
Nums AS (
    SELECT 1 AS n
    UNION ALL SELECT 2
    UNION ALL SELECT 3
    UNION ALL SELECT 4
    UNION ALL SELECT 5
    UNION ALL SELECT 6
    UNION ALL SELECT 7
    UNION ALL SELECT 8
    UNION ALL SELECT 9
    UNION ALL SELECT 10
)
SELECT n
FROM Nums;

рд╕реАрдХреНрд╡реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдореЗрдВ Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧред

рд╕реАрдХреНрд╡реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдореЗрдВ Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧред рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реА 10-рдкрдВрдХреНрддрд┐ рд╕реЗрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ cross join рдХрд░ 10├Ч10=100 рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

WITH
Nums AS (
    SELECT 1 AS n
    UNION ALL SELECT 2
    UNION ALL SELECT 3
    UNION ALL SELECT 4
    UNION ALL SELECT 5
    UNION ALL SELECT 6
    UNION ALL SELECT 7
    UNION ALL SELECT 8
    UNION ALL SELECT 9
    UNION ALL SELECT 10
)
SELECT A.n AS n1, B.n AS n2
FROM Nums A
CROSS JOIN Nums B
ORDER BY A.n, B.n;

рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЖрдкрдХреЛ 100 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдорд┐рд▓реЗрдВрдЧреА, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА (n1,n2) рд╣реЛрдЧреАред рдЖрдк рдЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕реИрдХрдбрд╝реЛрдВ, рд╣рдЬрд╝рд╛рд░реЛрдВ, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рд▓рд╛рдЦреЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВтАФрд╣рд╛рд▓рд╛рдБрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВред

рдЗрди рддрд░реАрдХреЛрдВтАФрдЖрдпрд╛рдо-рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЗрддреБ CTEs (рдпрд╛ VALUES рдХреНрд▓реЙрдЬрд╝) рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП CROSS JOINтАФрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдмрд┐рдирд╛ рдореМрдЬреВрджрд╛ рдЯреЗрдмрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реБрдП SQL рдореЗрдВ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

SQL рдореЗрдВ Cartesian product рдХреЛ рд╕рдордЭрдирд╛ рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рдЦреЛрд▓рддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдирд┐рдкреБрдг рд╣реЛрдХрд░, рдЖрдк рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛рд╕реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЙрдиреНрдирдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ SQL Server Fundamentals рд╕реНрдХрд┐рд▓ рдЯреНрд░реИрдХ рджреЗрдЦреЗрдВ рдФрд░ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдмрдврд╝рд╛рдПрдБред┬а

рдЖрдкрдХреЗ рдХрд░рд┐рдпрд░ рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдБрдЧрд╛/рджреВрдБрдЧреА рдХрд┐ рдЖрдк рдпрд╛ рддреЛ DataCamp рдХрд╛ Associate Data Analyst in SQL рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рдЬреЙрдЗрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдПрдирд╛рд▓рд┐рд╕реНрдЯ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджреНрдпреЛрдЧ-рд╕реНрддрд░реАрдп рдХреМрд╢рд▓ рд╕реАрдЦ рд╕рдХреЗрдВ, рдпрд╛ рд╣рдорд╛рд░рд╛ Associate Date Engineer in SQL рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рдЖрдЬрд╝рдорд╛рдПрдБ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░ рдмрди рд╕рдХреЗрдВред┬а

Allan Ouko

рд▓реЗрдЦрдХ

Allan Ouko

рдбреЗрдЯрд╛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдмрд┐рдЬрд╝рдиреЗрд╕ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдФрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рддрдХрдиреАрдХреА рд▓реЗрдЦрдХред рдореИрдВ SQL, Python, Power BI, Databricks рдФрд░ рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдкрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ, рдЙрджреНрдпреЛрдЧ-рдХреЗрдВрджреНрд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦрддрд╛/рд▓рд┐рдЦрддреА рд╣реВрдБ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИред рдореЗрд░реА рд▓реЗрдЦрдиреА рддрдХрдиреАрдХреА рдЧрд╣рд░рд╛рдИ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рднрд╛рд╡ рдХреЗ рдмреАрдЪ рдкреБрд▓ рдХрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕рдкреВрд░реНрдг рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ.┬а

Cartesian Product FAQs

SQL рдореЗрдВ cartesian product рдХреНрдпрд╛ рд╣реИ?

SQL рдореЗрдВ cartesian product рдПрдХ cross join рдСрдкрд░реЗрд╢рди рд╕реЗ рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рджреВрд╕рд░реА рдЯреЗрдмрд▓ рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрддреА рд╣реИред

Cartesian product рдЕрдиреНрдп SQL joins рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ?

рдЕрдиреНрдп joins рд╕реЗ рдЕрд▓рдЧ, cartesian product рд╢рд╛рдорд┐рд▓ рдЯреЗрдмрд▓реЛрдВ рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрдВрдХреНрддрд┐-рдпреБрдЧреНрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдХреНрд╕рд░ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирддрд╛ рд╣реИред

рдореБрдЭреЗ cartesian product рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЬрдм рдЖрдкрдХреЛ рджреЛ рдЯреЗрдмрд▓реЛрдВ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдиреЗ рд╣реЛрдВтАФрдЬреИрд╕реЗ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВтАФрддрдм cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

Cartesian products рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди-рд╕рдВрдмрдВрдзреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реИрдВ?

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

рдХреНрдпрд╛ SQL рдореЗрдВ cartesian products рдХреЗ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИрдВ?

рд╣рд╛рдБ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ-рдкреНрд░рдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИрдВ, рдЬреИрд╕реЗ inner рдпрд╛ outer joins, subqueries, рдФрд░ common table expressionsред

рд╡рд┐рд╖рдп