S databazí https://is.muni.cz/auth/el/phil/podzim2019/ISKB56/um/08_prednaska/books_2.sqlite 1) Vypište jména všech knih spolu s názvem jejich nakladatele (ve výsledku tak budou dva sloupce). 2) Upravte předchozí příklad tak, aby vypsal i knihy, které nemají žádného nakladatele 3) Vypište seznam nakladatelů spolu s počtem knih, které vydal (tj. ve výsledku budou vždy dva sloupce: název nakladatele a číslo - počet knih). Seřazeno od toho s nejmenším počtem knih. 4) Vypište seznam jazyků začínajících na “f” (tabulka languages, sloupeček language) a počet knih, které jsou v nich napsány. Sežazeno od toho s největším počtem knih 5) Vypište datum nejstarší a nejnovější knihy každého nakladatele. (tj. ve výsledku budou vždy tři sloupce: název nakladatele, číslo - rok nejstarší knihy, číslo - rok nejnovější knihy) 6) Vypiště název knihy, jmené nakladatele a jazyk knihy u knih, které byly vydány mezi lety 1980 a 1985, jejich název začíná na “A” a nekončí na “y” Řešení 1. SELECT books.title, publishers.publisher FROM books INNER JOIN publishers ON publisher_id = publishers.id 2. SELECT books.title, publishers.publisher FROM books LEFT JOIN publishers ON publisher_id = publishers.id ​(pozor, zde je důležité pořadí tabulek) 3. SELECT publishers.publisher, count(books.id) FROM publishers LEFT JOIN books ON publisher_id = publishers.id GROUP BY publishers.id ORDER BY count(books.id) a. Pozor. Musí zde být LEFT JOIN, INNER JOIN by “odstranil” nakladatele, kteří nevydali žádnou knihu b. Pozor. V COUNT nemůže být *, tím by se zobrazovala 1 i u nakladatele, který nevydal žádnou knihu 4. SELECT languages.language, count(books.id) FROM languages LEFT JOIN books ON books.language_id = languages.id WHERE languages.language LIKE "f%" GROUP BY languages.id ORDER BY COUNT(books.id) DESC 5. SELECT publishers.publisher, MIN(books.year), MAX(books.year) FROM publishers LEFT JOIN books ON publisher_id = publishers.id GROUP BY publishers.id 6. SELECT books.title, publishers.publisher, languages.language FROM books LEFT JOIN publishers ON publishers.id = books.publisher_id LEFT JOIN languages ON languages.id = books.language_id WHERE YEAR >= 1980 AND YEAR <=1985 AND books.title LIKE "a%" AND books.title NOT LIKE "%y" a. Mohl by se zde použít i INNER JOIN, pak by se vypsaly jen knihy, které mají v datech nastaveného jak nakladatele, tak jazyk b. POZOR: během pondělí a úterý zde bylo uvedo špatně řešení, které obsahovalo “JOIN publishers ON publishers.id = ​books.id​”. Správně je samozřejmě spojení JOIN publishers ON publishers.id = ​books.publisher_id