====== SQL Øvelser – JOINs (MariaDB) ====== Formålet med disse øvelser er at lære at anvende JOINs i SQL ved brug af __Chinook-datasættet__. Relations oversigt: \\ {{:images:chinook_relation.png?130}} I øvelserne arbejdes der med følgende JOIN-typer: * INNER JOIN * LEFT JOIN * RIGHT JOIN * CROSS JOIN * SELF JOIN Kun SELECT-forespørgsler må anvendes. * **OBS! OBS!** - Husk at notere jeres løsnings SQL queries i et dokument. ---- ===== Øvelse 1 – INNER JOIN ===== **Opgave:** Vis alle albums sammen med navnet på den kunstner, der har udgivet albummet. **Krav:** * Albumtitel * Kunstnernavn * Brug ''INNER JOIN'' ---- ===== Øvelse 2 – INNER JOIN med filtrering ===== **Opgave:** Vis alle tracks og deres albumtitler for albummet *Let There Be Rock*. **Krav:** * Track-navn * Albumtitel * Brug ''INNER JOIN'' * Filtrer på albumtitel ---- ===== Øvelse 3 – Flere INNER JOINs ===== **Opgave:** Vis alle tracks sammen med deres genre og medietype. **Krav:** * Track-navn * Genre-navn * MediaType-navn * Brug mindst to ''INNER JOINs'' * Sortér efter track-navn ---- ===== Øvelse 4 – INNER JOIN på faktatabel ===== **Opgave:** Vis alle fakturalinjer med tilhørende track-information. **Krav:** * InvoiceId * Track-navn * Enhedspris * Join ''InvoiceLine'' og ''Track'' med ''INNER JOIN'' ---- ===== Øvelse 5 – LEFT JOIN (manglende relationer) ===== **Opgave:** Vis alle kunder og deres fakturaer. **Krav:** * Kundenavn * InvoiceId * Brug ''LEFT JOIN'' * Kunder uden fakturaer skal også vises. (ups, ..alle kunder har en ordre. Opret en ny kunde uden ordre) ---- ===== Øvelse 6 – RIGHT JOIN ===== **Opgave:** Vis alle fakturaer og tilhørende kunder. **Krav:** * InvoiceId * Kundenavn * Brug ''RIGHT JOIN'' * Overvej hvordan samme resultat kan opnås med ''LEFT JOIN'' ---- ===== Øvelse 7 – CROSS JOIN ===== **Opgave:** Vis alle mulige kombinationer af genrer og medietyper. **Krav:** * Genre-navn * MediaType-navn * Brug ''CROSS JOIN'' ---- ===== Øvelse 8 – SELF JOIN ===== **Opgave:** Vis alle medarbejdere og deres chef. **Krav:** * Medarbejderens fulde navn * Chefens fulde navn * Brug ''SELF JOIN'' på ''Employee'' * Medtag også medarbejdere uden chef ++++ Hint | SELECT a.FirstName AS SlaveName, b.FirstName BossName FROM employee a LEFt JOIN employee b ON a.EmployeeId = b.ReportsTo; ++++ ---- ===== Øvelse 9 – JOIN + GROUP BY ===== **Opgave:** Vis alle kunder sammen med antallet af fakturaer og deres supportmedarbejder. **Krav:** * Kundenavn * Antal fakturaer * SupportRep-navn * Brug ''LEFT JOIN'' * Brug ''GROUP BY'' ---- ===== (Bonus opgave) Øvelse 10 – Avanceret JOIN ===== **Opgave:** Lav en oversigt over alle solgte tracks. **Krav:** * Track-navn * Kunstner * Album * Genre * Kundenavn * Start fra ''InvoiceLine'' * Brug mindst 5 JOINs * Kun solgte tracks skal vises * Sortér efter kunstner og album ----