Здравствуйте!
Поддержка не сможет помочь с вопросами, связанными с теорией или задачам из курса «Системный аналитик» — в этой ситуации рекомендуем вам обратиться к вашему преподавателю в чате в Slack.
Если же у вас возникнут иные вопросы — обязательно пишите, будем рады помочь :)
LEFT OUTER JOIN и RIGHT OUTER JOIN вы уже знакомы. Напомним: оператор LEFT OUTER JOIN предполагает, что в результат слияния обязательно войдут все записи из левой таблицы. Записи из правой таблицы сохранятся только в том случае, если значения в поле, по которому происходит объединение, совпадают со значениями в левой таблице. Оператор RIGHT OUTER JOIN устроен аналогичным образом, но бóльшим приоритетом обладает правая таблица. artist и album и вывести всех исполнителей, добавив информацию о музыкальных альбомах, которые они выпустили.artist хранит информацию об исполнителях и содержит поле artist_id с идентификатором и поле name с именем исполнителя. Таблица album содержит данные о музыкальных альбомах и включает в себя поля album_id и title с идентификатором альбома и его названием соответственно, а также поле artist_id с идентификатором исполнителя.artist и album связаны по ключу artist_id, и связь между ними — «один ко многим», ведь одному исполнителю может соответствовать несколько музыкальных альбомов.INNER JOIN не подойдёт: в таком случае исполнители без альбома в итоговую таблицу не попадут. Если использовать оператор LEFT OUTER JOIN, все исполнители попадут в выдачу. LEFT OUTER JOIN или сокращённую версию LEFT JOIN. SELECT art.name,
alb.title
FROM artist AS art
LEFT OUTER JOIN album AS alb ON art.artist_id = alb.artist_id
LIMIT 10; artist и album объединены по ключу artist_id, и благодаря оператору LEFT OUTER JOIN все значения из поля name таблицы artist попадут в итоговую таблицу. Если для какого-то исполнителя не найдётся альбома, на этом месте в поле title появится значение NULL.| name | title |
|---|---|
| AC/DC | For Those About To Rock We Salute You |
| AC/DC | Let There Be Rock |
| Accept | Balls to the Wall |
| Accept | Restless and Wild |
| Aerosmith | Big Ones |
| Alanis Morisette | Jagged Little Pill |
| Alice in Chains | Facelift |
| Antônio Carlos Jobim | Warner 25 Anos |
| Antônio Carlos Jobim | Chill: Brazil (Disc 2) |
| Apocalyptica | Plays Metallica By Four Cellos |
SELECT art.name,
alb.title
FROM album AS alb
RIGHT OUTER JOIN artist AS art ON art.artist_id = alb.artist_id
LIMIT 10; | name | title |
|---|---|
| AC/DC | For Those About To Rock We Salute You |
| AC/DC | Let There Be Rock |
| Accept | Balls to the Wall |
| Accept | Restless and Wild |
| Aerosmith | Big Ones |
| Alanis Morisette | Jagged Little Pill |
| Alice in Chains | Facelift |
| Antônio Carlos Jobim | Warner 25 Anos |
| Antônio Carlos Jobim | Chill: Brazil (Disc 2) |
| Apocalyptica | Plays Metallica By Four Cellos |
LEFT OUTER JOIN и RIGHT OUTER JOIN в большинстве случаев взаимозаменяемы. Достаточно просто поменять местами таблицы в запросе. В некоторых СУБД оператор RIGHT OUTER JOIN совсем не используют, потому что получить нужный результат можно, меняя таблицы местами.SELECT art.name,
COUNT(alb.title) AS total_album
FROM artist AS art
LEFT OUTER JOIN album AS alb ON art.artist_id = alb.artist_id
GROUP BY art.name
ORDER BY total_album DESC
LIMIT 10; | name | total_album |
|---|---|
| Iron Maiden | 21 |
| Led Zeppelin | 14 |
| Deep Purple | 11 |
| Metallica | 10 |
| U2 | 10 |
| Ozzy Osbourne | 6 |
| Pearl Jam | 5 |
| Faith No More | 4 |
| Foo Fighters | 4 |
| Various Artists | 4 |
invoice, которая хранит данные о дате заказа, не содержит информации о купленных треках.track и invoice_line по ключу track_id, а затем присоедините таблицу invoice по ключу invoice_id. В итоговую таблицу поместите два поля: name из таблицы track и invoice_date из таблицы invoice. Приведите дату к нужному формату.LEFT OUTER JOIN или RIGHT OUTER JOIN.DISTINCT, чтобы отобрать уникальные значения.employee_last_name и all_customers соответственно. Сгруппируйте записи по идентификатору сотрудника. Отсортируйте количество пользователей по убыванию, а фамилии сотрудников — в лексикографическом порядке.staff присоедините таблицу client с помощью оператора LEFT OUTER JOIN.reports_to. Посмотрите внимательно на схему базы: таблица staff отсылает сама к себе. Это нормально, можно не создавать новую таблицу с менеджерами. employee_last_name и manager_last_name.staff присоедините по такому условию: значение reports_to должно быть равно employee_id.movie другие таблицы, используйте LEFT OUTER JOIN — так ни один фильм не пропадёт из итоговой таблицы.album к таблице artist оператором LEFT OUTER JOIN. Артисты без альбомов останутся в итоговой таблице. Сгруппировав данные по полю из таблицы artist, можно найти количество альбомов, выпущенных исполнителем. Вам понадобятся те записи, в которых это число равно нулю.xxxxxxxxxxSELECT a.nameFROM artist AS aLEFT OUTER JOIN album AS al ON a.artist_id = al.artist_idWHERE al.album_id IS NULL;| name |
|---|
| Peter Tosh |
| Milton Nascimento & Bebeto |
| Azymuth |
| Youssou N'Dour |
| Nação Zumbi |
| Fernanda Porto |
| Regina Spektor |
| Santana Feat. Eagle-Eye Cherry |
| Christina Aguilera featuring BigElf |
| Luiz Melodia |
| Academy of St. Martin in the Fields, Sir Neville Marriner & William Bennett |
| Baby Consuelo |
| Nando Reis |
| Seu Jorge |
| Big & Rich |
| Santana Feat. The Project G&B |
| Corinne Bailey Rae |
| Vinícius De Moraes & Baden Powell |
| Pedro Luís E A Parede |
| Jack's Mannequin & Mick Fleetwood |
| Hermeto Pascoal |
| Vinícius E Qurteto Em Cy |
| Nega Gizza |
| Os Cariocas |
| R.E.M. Feat. KRS-One |
| Otto |
| Jackson Browne |
| Xis |
| Motörhead & Girlschool |
| Santana Feat. Maná |
| Ney Matogrosso |
| Dhani Harrison & Jakob Dylan |
| Snow Patrol |
| Rodox |
| Jack Johnson |
| Banda Black Rio |
| Stereo Maracana |
| Simply Red |
| Jaguares |
| Barão Vermelho |
| João Gilberto |
| Los Lonely Boys |
| Jorge Vercilo |
| Santana Feat. Rob Thomas |
| Charlie Brown Jr. |
| Los Hermanos |
| Sabotage E Instituto |
| Santana Feat. Eric Clapton |
| DJ Dolores & Orchestra Santa Massa |
| Vinícius E Odette Lara |
| Bebel Gilberto |
| Ben Harper |
| Instituto |
| The Postal Service |
| Kid Abelha |
| Edson, DJ Marky & DJ Patife Featuring Fernanda Porto |
| Sandra De Sá |
| Santana Feat. Dave Matthews |
| Vinicius, Toquinho & Quarteto Em Cy |
| A Cor Do Som |
| Avril Lavigne |
| Santana Feat. Everlast |
| The Flaming Lips |
| Black Eyed Peas |
| Aerosmith & Sierra Leone's Refugee Allstars |
| Whitesnake |
| Pedro Luís & A Parede |
| Matisyahu |
| Mundo Livre S/A |
| Santana Feat. Lauryn Hill & Cee-Lo |
| Gustavo & Andres Veiga & Salazar |