Úvod do SQL Hodina č. 9 JOIN Zdroj: https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins Zdroj: https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins Zdroj: https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins Datové modelování dbshop.jdem.cz modelshop.jdem.cz Které nakladatelství vydalo nejvíc knížek v holandštině? SELECT nakladatelstvi.nazev, count(*) FROM knihy INNER JOIN jazyky_vydani ON knihy.jazyk = jazyky_vydani.id LEFT JOIN nakladatelstvi ON nakladatelstvi.id = knihy.nakladatelstvi WHERE jazyky_vydani.nazev = "Holandština" GROUP BY nakladatelstvi ORDER BY COUNT(*) DESC 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID_kniha Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 ID_autor ID 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID_kniha Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 4 1 2 1 ID_autor ID 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID_kniha Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 4 1 2 1 3 2 3 3 ID_autor ID 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID_kniha Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 4 1 2 1 3 2 3 3 1 4 ID_autor ID 1 Kniha A 2 Kniha B 3 Kniha C 4 Kniha D ID_kniha Název 1 Autor 1 2 Autor 2 3 Autor 3 4 Autor 4 ID Jméno • Autor 1 napsal knihy B a D • Kniha C byla napsána autory 2 a 3 • Knihu A napsal autor 4 4 1 2 1 3 2 3 3 1 4 ID_autor ID Vypište knihy spolu s výpisem jejich žánrů. SELECT knihy.id, nazev, GROUP_CONCAT(zanry.zanr) FROM knihy LEFT JOIN knihy_zanry ON knihy.id = knihy_zanry.knihy_id LEFT JOIN zanry ON knihy_zanry.zanry_id = zanry.id GROUP BY knihy.id Vypište zákazníky a u každého z nich vypište, kolik knih si celkově koupil SELECT zakaznici.prijmeni, SUM(pocet) FROM zakaznici LEFT JOIN objednavky ON zakaznici.id_zakaznik = objednavky.id_zakaznik LEFT JOIN polozky_objednavky ON objednavky.id = polozky_objednavky.id_objednavka GROUP BY zakaznici.id_zakaznik ORDER BY SUM(pocet) DESC Vypište “cenu” jednotlivých objednávek SELECT id_objednavka, SUM(pocet * cena_za_kus) FROM polozky_objednavky GROUP BY id_objednavka ORDER BY SUM(pocet * cena_za_kus) DESC …u každého řádku vynásobíme počet kusu a cenu za kus a všechny tyto čísla nakonec sečteme Vypište objednávky doručené do Brna zaplacené kartou. Vždy jméno a příjmení zákazníka a cenu objednávky SELECT zakaznici.jmeno, zakaznici.prijmeni, objednavky.vytvoreno, objednavky.adresa_mesto, id_objednavka, SUM(pocet * cena_za_kus) FROM polozky_objednavky LEFT JOIN objednavky ON objednavky.id = polozky_objednavky.id_objednavka lEFT JOIN zakaznici ON zakaznici.id_zakaznik = objednavky.id_zakaznik WHERE adresa_mesto LIKE "Brno" AND objednavky.zpusob_platby = "kartou" GROUP BY id_objednavka ORDER BY SUM(pocet * cena_za_kus) DESC Vypište zákazníky a u každého z nich vypište, kolik celkem Kč utratil a kolik objednávek udělal SELECT zakaznici.prijmeni, SUM(pocet * cena_za_kus) as celkem_utratil, COUNT(DISTINCT id_objednavka) as celkem_objednavek FROM zakaznici LEFT JOIN objednavky ON zakaznici.id_zakaznik = objednavky.id_zakaznik LEFT JOIN polozky_objednavky ON objednavky.id = polozky_objednavky.id_objednavka GROUP BY zakaznici.id_zakaznik ORDER BY SUM(pocet * cena_za_kus) DESC