Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°

ОбъСдинСниС UNION ΠΈ UNION ALL Π² SQL – описаниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± объСдинСнии Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ срСдствам конструкции union ΠΈ union all, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ Π±Π΅Π· использования Ρ‚Π°ΠΊΠΎΠΉ конструкции Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π‘Π£Π‘Π” MSSQL 2008, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ язык SQL.

И Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ с Π’Π°ΠΌΠΈ ΡƒΠΆΠ΅ рассматривали ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² написания запросов Π½Π° SQL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ select языка SQL, ΠΈΠ»ΠΈ использованиС строковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ SQL, Ρ‚Π°ΠΊΠΆΠ΅ рассматривали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π° plpgsql Ρ‚Π°ΠΊ ΠΈ Π½Π° transact-sql, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° PL/pgSQL ΠΈ Transact-sql – Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ соотвСтствСнно.

Π― Π½Π΅ просто Ρ‚Π°ΠΊ ΡƒΠΊΠ°Π·Π°Π» Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π° ΡƒΠΊΠ°Π·Π°Π» я ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ для Π±ΠΎΠ»Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания ΠΈ усвоСния сСгодняшнСго ΡƒΡ€ΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ знания (это сайт для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

И Ρ‚Π°ΠΊ приступим. И для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ union ΠΈ union all.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ UNION ΠΈ UNION ALL Π² SQL?

НСобходимыС условия для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² union ΠΈ union all

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΈΡ… случаях Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ использованиС этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Ну, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Вас Π΅ΡΡ‚ΡŒ нСсколько Π±Π°Π· со схоТСй структурой, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… создана, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΠΈΠ»ΠΈΠ°Π»Π°, Π° Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ для прСдоставлСния отчСтности ΠΏΠΎ всСм Ρ„ΠΈΠ»ΠΈΠ°Π»Π°ΠΌ руководству ΠΈ самоС простоС ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ запросы Π½Π° SQL, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ, ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ union ΠΈΠ»ΠΈ union all ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ…. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ объСдинСниями это Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ union. ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π³ΠΎΠ²ΠΎΡ€ΡŽ «приходится» Π΄Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ данная конструкция Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя выполнСния запроса, Ссли Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Сю Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π₯Π²Π°Ρ‚ΠΈΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅! Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, запросы Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Management Studio для SQL Server 2008

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования union ΠΈ union all

Для Π½Π°Ρ‡Π°Π»Π° создадим Π΄Π²Π΅ простых Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ test_table ΠΈ test_table_2

Они ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ названия. Π― Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ» ΠΈΡ… Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 1. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 1

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· union. Бинтаксис ΠΎΡ‡Π΅Π½ΡŒ прост:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 2. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 2

Как Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Ρ‹Π²Π΅Π»ΠΎΡΡŒ всСго 5 строк, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас пСрвая строка Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ запросС ΠΈ пСрвая строка Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ запросС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, поэтому ΠΎΠ½ΠΈ объСдинились.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ объСдиним Ρ‡Π΅Ρ€Π΅Π· union all

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 3. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 3

Π—Π΄Π΅ΡΡŒ ΡƒΠΆΠ΅ Π²Ρ‹Π²Π΅Π»ΠΈΡΡŒ всС строки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ union all.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ошибки Π΄Π°ΠΆΠ΅ Π² этом простом запросС. НапримСр, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 4. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 4

Или ΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ запросС ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ этого Π½Π΅ сдСлали.

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 5. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 5

Π’Π°ΠΊΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании order by:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 6. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 6

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ сортировку Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС, Π° Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² послСднСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 7. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 7. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 7

И напослСдок, Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ хитрости, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π° ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС-Ρ‚Π°ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти Π² ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅, Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΈΠ»ΠΈ просто ΠΎΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, для этого ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ запрос:

Ρ‚.Π΅. ΠΊΠ°ΠΊ Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ просто Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пусто ΠΈ запрос ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. union all union 8. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-union all union 8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° union all union 8

И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ нСбольшой совСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ запросы ΠΏΡ€ΠΈ объСдинСнии Ρ‡Π΅Ρ€Π΅Π· union довольно ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Π΅, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π° ΠΈΡ… основС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС (Views), Π² случаС Ссли Π΄Π°Π½Π½Ρ‹ΠΉ запрос Π’Π°ΠΌ трСбуСтся постоянно, ΠΈ ΡƒΠΆΠ΅ ΠΊ этому ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° трСбуСтся, Π° Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ прСдставлСния ΠΌΡ‹ с Π’Π°ΠΌΠΈ ΡƒΠΆΠ΅ рассматривали Π²ΠΎΡ‚ здСсь – Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ прСдставлСния ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹.

НавСрноС, всС, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ конструкции union ΠΈ union all языка SQL я рассказал, Ссли Π΅ΡΡ‚ΡŒ вопросы ΠΏΠΎ использованию этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… Π² коммСнтариях. Π£Π΄Π°Ρ‡ΠΈ!

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°! Для комплСксного изучСния языка T-SQL Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠΎΠΈ видСокурсы ΠΏΠΎ T-SQL, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° обучСния ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ всС конструкции языка SQL ΠΈ T-SQL.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Oracle PL/SQL β€’MySQL β€’MariaDB β€’SQL Server β€’SQLite

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

SQL ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL

Π’ этом ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL с синтаксисом ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

ОписаниС

SQL ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объСдинСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ· 2 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SELECT. Он Π½Π΅ удаляСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ строки ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ SELECT (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ всС строки).
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SELECT Π² UNION ALL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство ΠΏΠΎΠ»Π΅ΠΉ Π² Π½Π°Π±ΠΎΡ€Π°Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ UNION ΠΈ UNION ALL?

Бинтаксис

Бинтаксис для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° UNION ALL Π² SQL.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅. Π’ этом простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ»Π΅ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… SELECT Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ имя ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….
НапримСр.

supplier_idsupplier_name
1000Microsoft
2000Oracle
3000Apple
4000Samsung

И Ρ‚Π°Π±Π»ΠΈΡ†Π° orders Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ записями.

order_idorder_datesupplier_id
2019-07-012000
2019-07-016000
2019-07-027000
2019-07-038000

И Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL.

Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

supplier_id
1000
2000
2000
3000
4000
6000
7000
8000

НСт нСобходимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ столбцы Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ SELECT ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
Если Ρƒ вас Π½Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ столбцов Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… SELECT, это становится Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, особСнно Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ORDER BY.
Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ UNION ALL с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ столбцов, ΠΈ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса.
НапримСр.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ UNION ΠΈ UNION ALL?

ΠžΡ‚Π²Π΅Ρ‚ΠΎΠ²: 22

UNION удаляСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ записи (Π³Π΄Π΅ всС столбцы Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹), UNION ALL Π½Π΅Ρ‚.

SELECT ‘foo’ AS bar UNION SELECT ‘foo’ AS bar ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

И UNION, ΠΈ UNION ALL ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… SQL. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.

UNION выполняСт DISTINCT Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ строки.

UNION ALL Π½Π΅ удаляСт Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ быстрСС, Ρ‡Π΅ΠΌ UNION.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ использовании этих ΠΊΠΎΠΌΠ°Π½Π΄ всС Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ столбцы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, 1) Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ ΠΈ 2) ΠšΠ»ΠΈΠ΅Π½Ρ‚

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. huYEL. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-huYEL. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° huYEL

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. FEaKe. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-FEaKe. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° FEaKe

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. lLiS1. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-lLiS1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° lLiS1

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. n5gvq. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-n5gvq. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° n5gvq

UNION удаляСт Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ UNION ALL Π½Π΅Ρ‚.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, сортировка выполняСтся быстрСС, Ссли ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² памяти, Π½ΠΎ примСняСтся ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ° ΠΎΠ± объСмС Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ Π±Π΅Π· Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ², Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UNION, Π² зависимости ΠΎΡ‚ источника Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

Π― Π±Ρ‹ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ пост, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Β«Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉΒ», Π½ΠΎ для этого нСдостаточно Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΠΈ (Π±Π°Π»Π»Ρ‹).

Π’ ORACLE: UNION Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ столбцов BLOB (ΠΈΠ»ΠΈ CLOB), UNION ALL Π΄Π΅Π»Π°Π΅Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ языку SQL (DDL, DML) Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° MS SQL Server. Π§Π°ΡΡ‚ΡŒ чСтвСртая

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ части

Π’ Π΄Π°Π½Π½ΠΎΠΉ части ΠΌΡ‹ рассмотрим

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Для дСмонстрационных Ρ†Π΅Π»Π΅ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ нСсколько ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² ΠΈ долТностСй:

JOIN-соСдинСния – ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соСдинСния Π΄Π°Π½Π½Ρ‹Ρ…

Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ пригодится Π·Π½Π°Π½ΠΈΠ΅ структуры Π‘Π”, Ρ‚.Π΅. ΠΊΠ°ΠΊΠΈΠ΅ Π² Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² этих Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ полям Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ всСгда досконально ΠΈΠ·ΡƒΡ‡Π°ΠΉΡ‚Π΅ структуру Π‘Π”, Ρ‚.ΠΊ. Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ знаСшь, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡƒΠ΄Π° бСрСтся. Π£ нас структура состоит ΠΈΠ· 3-Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Employees, Departments ΠΈ Positions. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ здСсь Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ части:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Если ΡΡƒΡ‚ΡŒ Π Π”Π‘ – раздСляй ΠΈ властвуй, Ρ‚ΠΎ ΡΡƒΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ объСдинСний снова ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Π΅ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚.Π΅. привСсти ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² чСловСчСский Π²ΠΈΠ΄.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ просто, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соСдинСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. ВспомнитС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ запросС ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees, Π½Π°ΠΌ для получСния ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° нСдоставало поля «НазваниС ΠΎΡ‚Π΄Π΅Π»Π°Β», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Departments.

ПониманиС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° соСдинСния ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‚.ΠΊ. ΠΎΡ‚ примСнСния Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ запроса с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° соСдинСния, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΊΠ° просто ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΈ ΠΈΠ΄ΠΈΡ‚Π΅ дальшС (ΠΌΡ‹ сюда Π΅Ρ‰Π΅ вСрнСмся):

IDNameDepartmentIDIDName
1000Иванов И.И.11Администрация
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.33ИВ
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.22БухгалтСрия
1003АндрССв А.А.33ИВ
1004НиколаСв Н.Н.33ИВ
IDNameDepartmentIDIDName
1000Иванов И.И.11Администрация
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.33ИВ
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.22БухгалтСрия
1003АндрССв А.А.33ИВ
1004НиколаСв Н.Н.33ИВ
1005АлСксандров А.А.NULLNULLNULL
IDNameDepartmentIDIDName
1000Иванов И.И.11Администрация
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.22БухгалтСрия
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.33ИВ
1003АндрССв А.А.33ИВ
1004НиколаСв Н.Н.33ИВ
NULLNULLNULL4ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
NULLNULLNULL5Логистика
IDNameDepartmentIDIDName
1000Иванов И.И.11Администрация
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.33ИВ
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.22БухгалтСрия
1003АндрССв А.А.33ИВ
1004НиколаСв Н.Н.33ИВ
1005АлСксандров А.А.NULLNULLNULL
NULLNULLNULL4ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
NULLNULLNULL5Логистика
IDNameDepartmentIDIDName
1000Иванов И.И.11Администрация
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.31Администрация
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.21Администрация
1003АндрССв А.А.31Администрация
1004НиколаСв Н.Н.31Администрация
1005АлСксандров А.А.NULL1Администрация
1000Иванов И.И.12БухгалтСрия
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.32БухгалтСрия
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.22БухгалтСрия
1003АндрССв А.А.32БухгалтСрия
1004НиколаСв Н.Н.32БухгалтСрия
1005АлСксандров А.А.NULL2БухгалтСрия
1000Иванов И.И.13ИВ
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.33ИВ
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.23ИВ
1003АндрССв А.А.33ИВ
1004НиколаСв Н.Н.33ИВ
1005АлСксандров А.А.NULL3ИВ
1000Иванов И.И.14ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.34ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.24ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1003АндрССв А.А.34ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1004НиколаСв Н.Н.34ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1005АлСксандров А.А.NULL4ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°
1000Иванов И.И.15Логистика
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.35Логистика
1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.25Логистика
1003АндрССв А.А.35Логистика
1004НиколаСв Н.Н.35Логистика
1005АлСксандров А.А.NULL5Логистика

Настало врСмя Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ псСвдонимы Ρ‚Π°Π±Π»ΠΈΡ†

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ псСвдонимы Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я рассказывал Π² Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части.

Π’ ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… запросах, псСвдоним ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ бСрСтся ΠΏΠΎΠ»Π΅. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ Π½Π΅ΠΌ поля с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ID ΠΈ Name Π΅ΡΡ‚ΡŒ Π² ΠΎΠ±ΠΎΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΈ Π² Employees, ΠΈ Π² Departments. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ, ΠΌΡ‹ прСдваряСм имя поля псСвдонимом ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Ρ‚.Π΅. Β«emp.IDΒ», Β«emp.NameΒ», Β«dep.IDΒ», Β«dep.NameΒ».

ВспоминаСм ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ псСвдонимами – ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Π±Π΅Π· псСвдонимов наш запрос Π±Ρ‹ выглядСл ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

По ΠΌΠ½Π΅, стало ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎ ΠΈ Ρ…ΡƒΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎ, Ρ‚.ΠΊ. ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΠ»ΠΈΡΡŒ срСди ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈΠΌΠ΅Π½ Ρ‚Π°Π±Π»ΠΈΡ†.

Π’ ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… запросах, Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π±Π΅Π· псСвдонима, Π² случаС Ссли имя Π½Π΅ дублируСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½ΠΎ я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ псСвдонимы Π² случаС соСдинСния, Ρ‚.ΠΊ. Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ добавят Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° Ρ‚ΠΎΠ³Π΄Π° ваш запрос просто сломаСтся, Ρ€ΡƒΠ³Π°ΡΡΡŒ Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ относится Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

Волько ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ псСвдонимы, ΠΌΡ‹ смоТСм ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ соСдинСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ самой с собой. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ встала Π·Π°Π΄Π°Ρ‡Π°, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника, Π΄Π°Π½Π½Ρ‹Π΅ сотрудника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» принят прямо Π΄ΠΎ Π½Π΅Π³ΠΎ (Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ отличаСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС). Допустим, Ρ‡Ρ‚ΠΎ Ρƒ нас Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π±Π΅Π· Π΄Ρ‹Ρ€ΠΎΠΊ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’.Π΅. здСсь ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees, ΠΌΡ‹ Π΄Π°Π»ΠΈ псСвдоним Β«e1Β», Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Β«e2Β».

Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соСдинСния

Для этой Ρ†Π΅Π»ΠΈ рассмотрим 2 нСбольшиС абстрактныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ LeftTable ΠΈ RightTable:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² этих Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…:

LCodeLDescr
1L-1
2L-2
3L-3
5L-5
RCodeRDescr
2B-2
3B-3
4B-4
LCodeLDescrRCodeRDescr
2L-22B-2
3L-33B-3

Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ объСдинСния строк для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ условиС (l.LCode=r.RCode)

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

LEFT JOIN

LCodeLDescrRCodeRDescr
1L-1NULLNULL
2L-22B-2
3L-33B-3
5L-5NULLNULL

Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ всС строки LeftTable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ строк ΠΈΠ· RightTable, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ условиС (l.LCode=r.RCode)

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

RIGHT JOIN

LCodeLDescrRCodeRDescr
2L-22B-2
3L-33B-3
NULLNULL4B-4

Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ всС строки RightTable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ строк ΠΈΠ· LeftTable, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ условиС (l.LCode=r.RCode)

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

По сути Ссли ΠΌΡ‹ пСрСставим LeftTable ΠΈ RightTable мСстами, Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π»Π΅Π²ΠΎΠ³ΠΎ соСдинСния:

LCodeLDescrRCodeRDescr
2L-22B-2
3L-33B-3
NULLNULL4B-4

Π― Π·Π° собой Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ я Ρ‡Π°Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ LEFT JOIN, Ρ‚.Π΅. я сначала Π΄ΡƒΠΌΠ°ΡŽ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ½Π΅ Π²Π°ΠΆΠ½Ρ‹, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΡƒΠΌΠ°ΡŽ, какая Ρ‚Π°Π±Π»ΠΈΡ†Π°/Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

FULL JOIN – это ΠΏΠΎ сути ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ LEFT JOIN + RIGHT JOIN

LCodeLDescrRCodeRDescr
1L-1NULLNULL
2L-22B-2
3L-33B-3
5L-5NULLNULL
NULLNULL4B-4

Π’Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ всС строки ΠΈΠ· LeftTable ΠΈ RightTable. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ условиС (l.LCode=r.RCode) Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½Ρƒ строку. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² строкС Π΄Π°Π½Π½Ρ‹Π΅ с Π»Π΅Π²ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ стороны Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ NULL-значСниями.

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

CROSS JOIN

LCodeLDescrRCodeRDescr
1L-12B-2
2L-22B-2
3L-32B-2
5L-52B-2
1L-13B-3
2L-23B-3
3L-33B-3
5L-53B-3
1L-14B-4
2L-24B-4
3L-34B-4
5L-54B-4

КаТдая строка LeftTable соСдиняСтся с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ всСх строк RightTable.

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

ВозвращаСмся ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Employees ΠΈ Departments

НадСюсь Π²Ρ‹ поняли ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… соСдинСний. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Β«JOIN-соСдинСния – ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соСдинСния Π΄Π°Π½Π½Ρ‹Ρ…Β» ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с объСдинСниСм Ρ‚Π°Π±Π»ΠΈΡ† Employees ΠΈ Departments, Π° ΠΏΠΎΡ‚ΠΎΠΌ снова Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ сюда, обсудим это вмСстС.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вмСстС подвСсти Ρ€Π΅Π·ΡŽΠΌΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса:

Π—Π°ΠΏΡ€ΠΎΡΠ Π΅Π·ΡŽΠΌΠ΅
По сути Π΄Π°Π½Π½Ρ‹ΠΉ запрос Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сотрудников, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DepartmentID.
Π’.Π΅. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ соСдинСниС, Π² случаС, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сотрудникам числящихся Π·Π° ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ (Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π²Π½Π΅ΡˆΡ‚Π°Ρ‚ΠΊΠΈΠΊΠΎΠ²).
Π’Π΅Ρ€Π½Π΅Ρ‚ всСх сотрудников. Для Ρ‚Π΅Ρ… сотрудников Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ DepartmentID, поля Β«dep.IDΒ» ΠΈ Β«dep.NameΒ» Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ NULL.
ВспоминайтС, Ρ‡Ρ‚ΠΎ NULL значСния Π² случаС нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ISNULL(dep.Name,’Π²Π½Π΅ ΡˆΡ‚Π°Ρ‚Π°’).
Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ соСдинСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ всСм сотрудникам, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список для начислСния Π—ΠŸ.
Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Ρ‹Ρ€ΠΊΠΈ слСва, Ρ‚.Π΅. ΠΎΡ‚Π΄Π΅Π» Π΅ΡΡ‚ΡŒ, Π½ΠΎ сотрудников Π² этом ΠΎΡ‚Π΄Π΅Π»Π΅ Π½Π΅Ρ‚.
Π’Π°ΠΊΠΎΠ΅ соСдинСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»Ρ‹ ΠΈ ΠΊΠ΅ΠΌ Ρƒ нас заняты, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΅Ρ‰Π΅ Π½Π΅ сформированы. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π».
Π­Ρ‚ΠΎΡ‚ запрос Π²Π°ΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сотрудникам ΠΈ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ. БоотвСтствСнно ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Ρ‹Ρ€ΠΊΠΈ (NULL-значСния) Π»ΠΈΠ±ΠΎ ΠΏΠΎ сотрудникам, Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ (Π²Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΈΠΊΠΈ).
Π”Π°Π½Π½Ρ‹ΠΉ запрос, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² цСлях ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, всС Π»ΠΈ сотрудники сидят Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π΄Π΅Π»Π°Ρ…, Ρ‚.ΠΊ. ΠΌΠΎΠΆΠ΅Ρ‚ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сотрудников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ числятся ΠΊΠ°ΠΊ Π²Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΈΠΊΠΈ, просто Π·Π°Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π».
Π’ Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π°ΠΆΠ΅ слоТно ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π³Π΄Π΅ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, поэтому ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с CROSS JOIN я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½ΠΈΠΆΠ΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² случаС повторСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ DepartmentID Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ соСдинСниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ строки со строкой ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Departments с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ID, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Departments объСдинились со всСми записями для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ условиС (emp.DepartmentID=dep.ID):

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π’ нашСм случаС всС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚.Π΅. ΠΌΡ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employees, Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Departments. Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ заострил Π½Π° этом Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‚.ΠΊ. Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Для дСмонстрации поставим Π·Π°Π΄Π°Ρ‡Ρƒ – для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π° вывСсти послСднСго принятого сотрудника, Ссли сотрудников Π½Π΅Ρ‚, Ρ‚ΠΎ просто вывСсти Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ – просто Π²Π·ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ запрос ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ условиС соСдинСниС Π½Π° RIGHT JOIN, плюс ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ поля мСстами:

IDNameIDName
1Администрация1000Иванов И.И.
2БухгалтСрия1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.
3ИВ1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.
3ИВ1003АндрССв А.А.
3ИВ1004НиколаСв Н.Н.
4ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°NULLNULL
5ЛогистикаNULLNULL

Но ΠΌΡ‹ для ИВ-ΠΎΡ‚Π΄Π΅Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ строчки, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π±Ρ‹Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строчка с послСдним принятым сотрудником, Ρ‚.Π΅. НиколаСвым Н.Н.

Π—Π°Π΄Π°Ρ‡Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ использования подзапроса:

IDNameIDName
1Администрация1000Иванов И.И.
2БухгалтСрия1002Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.
3ИВ1004НиколаСв Н.Н.
4ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°NULLNULL
5ЛогистикаNULLNULL

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ объСдинСния Employees с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ подзапроса, ΠΌΡ‹ смогли ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ для соСдинСния с Departments сотрудников.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ использованию подзапросов. Π― Π΄ΡƒΠΌΠ°ΡŽ использованиС ΠΈΡ… Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ для вас понятно Π½Π° ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ подзапрос подставляСтся Π½Π° мСсто Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π΅Π΅ Ρ€ΠΎΠ»ΡŒ, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного. К Ρ‚Π΅ΠΌΠ΅ подзапросов ΠΌΡ‹ Π΅Ρ‰Π΅ вСрнСмся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подзапрос:

MaxEmployeeID
1005
1000
1002
1004

Π’.Π΅. ΠΎΠ½ Π²Π΅Ρ€Π½ΡƒΠ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ послСдних принятых сотрудников, Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ².

БоСдинСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ свСрху-Π²Π½ΠΈΠ·, Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°ΡΡΡŒ ΠΊΠ°ΠΊ снСТный ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ катится с Π³ΠΎΡ€Ρ‹. Π‘Π½Π°Ρ‡Π°Π»Π° происходит соСдинСниС Β«Employees emp JOIN (ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ) lastEmpΒ», формируя Π½ΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π½Π°Π±ΠΎΡ€:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

ΠŸΠΎΡ‚ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ объСдинСниС Π½Π°Π±ΠΎΡ€Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Β«Employees emp JOIN (ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ) lastEmpΒ» (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ условно Β«ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β») с Departments, Ρ‚.Π΅. Β«ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ RIGHT JOIN Departments depΒ»:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° для закрСплСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°

Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Ρ‚ΠΎ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ JOIN-ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π° 100% Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ соСдинСния ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² ΠΈΡ‚ΠΎΠ³Π΅.

Для закрСплСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΡ€ΠΎ JOIN-соСдинСния сдСлаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…:

LCodeLDescr
1L-1
2L-2a
2L-2b
3L-3
5L-5
RCodeRDescr
2B-2a
2B-2b
3B-3
4B-4

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ сами Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ каТдая строчка запроса с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ соСдинСния (Excel Π²Π°ΠΌ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ):

LCodeLDescrRCodeRDescr
2L-2a2B-2a
2L-2a2B-2b
2L-2b2B-2a
2L-2b2B-2b
3L-33B-3

LCodeLDescrRCodeRDescr
1L-1NULLNULL
2L-2a2B-2a
2L-2a2B-2b
2L-2b2B-2a
2L-2b2B-2b
3L-33B-3
5L-5NULLNULL

LCodeLDescrRCodeRDescr
2L-2a2B-2a
2L-2b2B-2a
2L-2a2B-2b
2L-2b2B-2b
3L-33B-3
NULLNULL4B-4

LCodeLDescrRCodeRDescr
1L-1NULLNULL
2L-2a2B-2a
2L-2a2B-2b
2L-2b2B-2a
2L-2b2B-2b
3L-33B-3
5L-5NULLNULL
NULLNULL4B-4

LCodeLDescrRCodeRDescr
1L-12B-2a
2L-2a2B-2a
2L-2b2B-2a
3L-32B-2a
5L-52B-2a
1L-12B-2b
2L-2a2B-2b
2L-2b2B-2b
3L-32B-2b
5L-52B-2b
1L-13B-3
2L-2a3B-3
2L-2b3B-3
3L-33B-3
5L-53B-3
1L-14B-4
2L-2a4B-4
2L-2b4B-4
3L-34B-4
5L-54B-4

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΎ JOIN-соСдинСния

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ соСдинСнии. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ получился Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ – Π½Π΅ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΆΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». πŸ˜‰ Но Π½ΠΈΡ‡Π΅Π³ΠΎ Β«ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ – ΠΌΠ°Ρ‚ΡŒ учСния».

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ соСдинСния, Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ свСрху-Π²Π½ΠΈΠ·. Π“Ρ€ΡƒΠ±ΠΎ говоря, послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния создаСтся Π½ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ соСдинСниС ΡƒΠΆΠ΅ происходит с этим Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ. Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹Π±Ρ€Π°Π»ΠΈΡΡŒ всС записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees:

Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ соСдинСниС с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Departments:

Π”Π°Π»ΡŒΡˆΠ΅ ΡƒΠΆΠ΅ ΠΈΠ΄Π΅Ρ‚ соСдинСниС этого Π½Π°Π±ΠΎΡ€Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Positions:

Π’.Π΅. это выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

И Π² послСднюю ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ‚Π΅Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ просим вывСсти:

БоотвСтствСнно, ΠΊΠΎ всСму этому ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ WHERE ΠΈ сортировку ORDER BY:

IDEmployeeNamePositionNameDepartmentName
1004НиколаСв Н.Н.ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π˜Π’
1001ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π˜Π’

Π’ΠΎ Π΅ΡΡ‚ΡŒ послСдний ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ – прСдставляСт собой Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ запрос:

Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли Ρ€Π°Π½ΡŒΡˆΠ΅ Π² Ρ€ΠΎΠ»ΠΈ источника выступала Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° это мСсто ΠΌΡ‹ просто подставляСм нашС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ запрос:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ:

Π’ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ всС Ρ‚Π°ΠΊ ΠΆΠ΅ крутимся Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π° ΠΎΠΊΠΎΠ»ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкций, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ надСюсь понятно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ….

И ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Π² запросС Π½Π° мСстС любой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ подзапрос. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ подзапросы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² подзапросы. И всС эти подзапросы Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя Π±Π°Π·ΠΎΠ²Ρ‹Π΅ конструкции. Π’ΠΎ Π΅ΡΡ‚ΡŒ базовая конструкция, это ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится любой запрос.

ΠžΠ±Π΅Ρ‰Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с CROSS JOIN

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ соСдинСниС CROSS JOIN, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сколько сотрудников, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»Π΅ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ… долТностях числится. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π° пСрСчислим всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ долТности:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС сначала Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ соСдинСниС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CROSS JOIN, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ сдСлалось соСдинСниС с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· подзапроса ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ LEFT JOIN. ВмСсто Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² LEFT JOIN ΠΌΡ‹ использовали подзапрос.

ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² скобки ΠΈ Π΅ΠΌΡƒ присваиваСтся псСвдоним, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Β«eΒ». Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС объСдинСниС происходит Π½Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса:

DepartmentIDPositionIDEmplCount
NULLNULL1
211
121
332
341

ВмСстС с псСвдонимом Β«eΒ» ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° DepartmentID, PositionID ΠΈ EmplCount. По сути дальшС подзапрос Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ссли Π½Π° Π΅Π³ΠΎ мСстС стояла Ρ‚Π°Π±Π»ΠΈΡ†Π°. БоотвСтствСнно, ΠΊΠ°ΠΊ ΠΈ Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹,
всС ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подзапрос, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ явно ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ.

Бвязь ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ WHERE-условия

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос с JOIN-соСдинСниСм:

Π§Π΅Ρ€Π΅Π· WHERE-условиС ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

Π—Π΄Π΅ΡΡŒ ΠΏΠ»ΠΎΡ…ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит смСшиваниС условий соСдинСния Ρ‚Π°Π±Π»ΠΈΡ† (emp.DepartmentID=dep.ID) с условиСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ (emp.DepartmentID=3).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ CROSS JOIN:

Π§Π΅Ρ€Π΅Π· WHERE-условиС ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

Π’.Π΅. Π² этом случаС ΠΌΡ‹ просто Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ условиС соСдинСния Ρ‚Π°Π±Π»ΠΈΡ† Employees ΠΈ Departments. Π§Π΅ΠΌ ΠΏΠ»ΠΎΡ… этот запрос? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ смотрит Π½Π° ваш запрос ΠΈ Π΄ΡƒΠΌΠ°Π΅Ρ‚ «каТСтся Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ писал запрос Π·Π°Π±Ρ‹Π» здСсь Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ условиС (emp.DepartmentID=dep.ID)Β» ΠΈ с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» косяк, дописываСт это условиС. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΡΡ, Ρ‚.ΠΊ. Π²Ρ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π»ΠΈ CROSS JOIN. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²ΠΎ соСдинСниС, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ явно ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ CROSS JOIN.

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° запроса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π±Π΅Π· Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ соСдинСниС (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ WHERE ΠΈΠ»ΠΈ JOIN), ΠΎΠ½ ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Но ΠΈΠ· сообраТСния понимаСмости ΠΊΠΎΠ΄Π°, я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π² соврСмСнных Π‘Π£Π‘Π” ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ соСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ WHERE-условия. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WHERE-условия для соСдинСния, Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² Π‘Π£Π‘Π” Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ конструкции JOIN, я Π±Ρ‹ Π½Π°Π·Π²Π°Π» сСйчас ΠΌΠΎΠ²Π΅Ρ‚ΠΎΠ½ΠΎΠΌ. WHERE-условия слуТат для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π±ΠΎΡ€Π°, ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ условия слуТащиС для соСдинСния, с условиями ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΌΠΈ Π·Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ. Но Ссли Π²Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ соСдинСния Ρ‡Π΅Ρ€Π΅Π· WHERE Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Β«ΠΊ Ρ‡Π΅Ρ€Ρ‚Ρƒ всС устои».

UNION-объСдинСния – ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ объСдинСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ словосочСтания Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ соСдинСниС ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС, Ρ‚.ΠΊ. Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ часто Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ ΠΏΡƒΡ‚Π°ΡŽΡ‚ ΡΡƒΡ‚ΡŒ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ вспомним ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Π°:

Π’Π°ΠΊ Π²ΠΎΡ‚, Ссли Π±Ρ‹ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ сущСствуСт опСрация Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π½ΠΎ Π·Π½Π°Π»ΠΈ Π±Ρ‹, Ρ‡Ρ‚ΠΎ сущСствуСт опСрация объСдинСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ UNION ALL, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ всС эти запросы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π’.Π΅. UNION ALL позволяСт ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ запросами Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

БоотвСтствСнно количСство ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимыми ΠΈ Ρ‚ΠΈΠΏΡ‹ этих ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, Ρ‚.Π΅. строка ΠΏΠΎΠ΄ строкой, число ΠΏΠΎΠ΄ числом, Π΄Π°Ρ‚Π° ΠΏΠΎΠ΄ Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Ρ‚.ΠΏ.

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ

Π’ MS SQL Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ объСдинСния:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
UNION ALLΠ’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ всС строки ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ². (A+B)
UNIONΠ’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ строки Π΄Π²ΡƒΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ². DISTINCT(A+B)
EXCEPTΠ’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ строки Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅. Π Π°Π·Π½ΠΈΡ†Π° 2-Ρ… мноТСств. DISTINCT(A-B)
INTERSECTΠ’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ строки, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠ±ΠΎΠΈΡ… Π½Π°Π±ΠΎΡ€Π°Ρ…. ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ 2-Ρ… мноТСств. DISTINCT(A&B)

ВсС это ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π° наглядном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ 2 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΡ… Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° содСрТимоС:

T1T2
1Text 1
1Text 1
2Text 2
3Text 3
4Text 4
5Text 5
B1B2
2Text 2
3Text 3
6Text 6
6Text 6

UNION ALL

Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. image loader. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Ρ„ΠΎΡ‚ΠΎ. Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Union ΠΈ union all Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

UNION

По сути UNION ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ UNION ALL, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° опСрация DISTINCT:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *