CREATE TABLE rt_osakonnad( osakond VARCHAR(50) NOT NULL PRIMARY KEY, telefon VARCHAR(20) ); CREATE TABLE rt_raamatud( pealkiri VARCHAR(50) NOT NULL PRIMARY KEY, aasta INT, osakond VARCHAR(50), FOREIGN KEY (osakond) REFERENCES rt_osakonnad(osakond) ); SELECT * FROM rt_osakonnad; +-------------+---------+ | osakond | telefon | +-------------+---------+ | ajalugu | 6789345 | | kirjandus | 6789346 | | matemaatika | 6789344 | | muusika | 6789343 | +-------------+---------+ SELECT * FROM rt_raamatud; +---------------------------------------------------------------------------------------------------+-------+-------------+ | pealkiri | aasta | osakond | +---------------------------------------------------------------------------------------------------+-------+-------------+ | Eesti rahvalaulud. Estonian Folk Songs | 2015 | muusika | | Laulik. Simmaniduo ja Kandlemees Sander. 43 laulu sünnipäevadeks, pulmadeks ja muudeks pidudeks | 2016 | muusika | | Mõõtmise alused | 2002 | matemaatika | | Nutiprooviks lastele | 2016 | matemaatika | | Pärimusmuusika noodikogu | 2016 | muusika | +---------------------------------------------------------------------------------------------------+-------+-------------+ SELECT * FROM rt_raamatud JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond; +---------------------------------------------------------------------------------------------------+-------+-------------+-------------+---------+ | pealkiri | aasta | osakond | osakond | telefon | +---------------------------------------------------------------------------------------------------+-------+-------------+-------------+---------+ | Mõõtmise alused | 2002 | matemaatika | matemaatika | 6789344 | | Nutiprooviks lastele | 2016 | matemaatika | matemaatika | 6789344 | | Eesti rahvalaulud. Estonian Folk Songs | 2015 | muusika | muusika | 6789343 | | Laulik. Simmaniduo ja Kandlemees Sander. 43 laulu sünnipäevadeks, pulmadeks ja muudeks pidudeks | 2016 | muusika | muusika | 6789343 | | Pärimusmuusika noodikogu | 2016 | muusika | muusika | 6789343 | +---------------------------------------------------------------------------------------------------+-------+-------------+-------------+---------+ SELECT LEFT(pealkiri, 20), rt_raamatud.osakond, telefon FROM rt_raamatud JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond; +-----------------------+-------------+---------+ | LEFT(pealkiri, 20) | osakond | telefon | +-----------------------+-------------+---------+ | Mõõtmise alused | matemaatika | 6789344 | | Nutiprooviks lastele | matemaatika | 6789344 | | Eesti rahvalaulud. E | muusika | 6789343 | | Laulik. Simmaniduo j | muusika | 6789343 | | Pärimusmuusika noodi | muusika | 6789343 | +-----------------------+-------------+---------+ -- Millises osakonnas on mitu raamatut kirjas (raamatute tabeli põhjal) SELECT osakond, COUNT(*) FROM rt_raamatud GROUP BY osakond; +-------------+----------+ | osakond | COUNT(*) | +-------------+----------+ | matemaatika | 2 | | muusika | 3 | +-------------+----------+ -- Lisage iga osakonna juurde sealse raamatu vähim ja suurim aastaarv SELECT osakond, COUNT(*) as kogus, MIN(aasta) as vanim, MAX(aasta) as uusim FROM rt_raamatud GROUP BY osakond; +-------------+-------+-------+-------+ | osakond | kogus | vanim | uusim | +-------------+-------+-------+-------+ | matemaatika | 2 | 2002 | 2016 | | muusika | 3 | 2015 | 2016 | +-------------+-------+-------+-------+ SELECT rt_osakonnad.osakond, telefon, COUNT(*) as kogus, MIN(aasta) as vanim, MAX(aasta) as uusim FROM rt_raamatud JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond GROUP BY rt_osakonnad.osakond; +-------------+---------+-------+-------+-------+ | osakond | telefon | kogus | vanim | uusim | +-------------+---------+-------+-------+-------+ | matemaatika | 6789344 | 2 | 2002 | 2016 | | muusika | 6789343 | 3 | 2015 | 2016 | +-------------+---------+-------+-------+-------+ SELECT rt_osakonnad.osakond FROM rt_osakonnad; +-------------+ | osakond | +-------------+ | ajalugu | | kirjandus | | matemaatika | | muusika | +-------------+ SELECT rt_osakonnad.osakond, (SELECT COUNT(*) FROM rt_raamatud) FROM rt_osakonnad; +-------------+------------------------------------+ | osakond | (SELECT COUNT(*) FROM rt_raamatud) | +-------------+------------------------------------+ | ajalugu | 5 | | kirjandus | 5 | | matemaatika | 5 | | muusika | 5 | +-------------+------------------------------------+ SELECT rt_osakonnad.osakond, (SELECT COUNT(*) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) FROM rt_osakonnad; +-------------+-----------------------------------------------------------------------------------+ | osakond | (SELECT COUNT(*) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) | +-------------+-----------------------------------------------------------------------------------+ | ajalugu | 0 | | kirjandus | 0 | | matemaatika | 2 | | muusika | 3 | +-------------+-----------------------------------------------------------------------------------+ SELECT rt_osakonnad.osakond, (SELECT GROUP_CONCAT(aasta) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) FROM rt_osakonnad; +-------------+----------------------------------------------------------------------------------------------+ | osakond | (SELECT GROUP_CONCAT(aasta) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) | +-------------+----------------------------------------------------------------------------------------------+ | ajalugu | NULL | | kirjandus | NULL | | matemaatika | 2002,2016 | | muusika | 2015,2016,2016 | +-------------+----------------------------------------------------------------------------------------------+ SELECT LEFT(pealkiri, 20), rt_osakonnad.osakond, telefon FROM rt_raamatud RIGHT JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond; +-----------------------+-------------+---------+ | LEFT(pealkiri, 20) | osakond | telefon | +-----------------------+-------------+---------+ | NULL | ajalugu | 6789345 | | NULL | kirjandus | 6789346 | | Mõõtmise alused | matemaatika | 6789344 | | Nutiprooviks lastele | matemaatika | 6789344 | | Eesti rahvalaulud. E | muusika | 6789343 | | Laulik. Simmaniduo j | muusika | 6789343 | | Pärimusmuusika noodi | muusika | 6789343 | +-----------------------+-------------+---------+ INSERT INTO rt_raamatud VALUES ('Arvutiaabits', 2006, NULL); SELECT LEFT(pealkiri, 20), osakond FROM rt_raamatud; +-----------------------+-------------+ | LEFT(pealkiri, 20) | osakond | +-----------------------+-------------+ | Arvutiaabits | NULL | | Mõõtmise alused | matemaatika | | Nutiprooviks lastele | matemaatika | | Eesti rahvalaulud. E | muusika | | Laulik. Simmaniduo j | muusika | | Pärimusmuusika noodi | muusika | +-----------------------+-------------+ SELECT LEFT(pealkiri, 20), rt_osakonnad.osakond, telefon FROM rt_raamatud JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond; +-----------------------+-------------+---------+ | LEFT(pealkiri, 20) | osakond | telefon | +-----------------------+-------------+---------+ | Mõõtmise alused | matemaatika | 6789344 | | Nutiprooviks lastele | matemaatika | 6789344 | | Eesti rahvalaulud. E | muusika | 6789343 | | Laulik. Simmaniduo j | muusika | 6789343 | | Pärimusmuusika noodi | muusika | 6789343 | +-----------------------+-------------+---------+ SELECT LEFT(pealkiri, 20), rt_osakonnad.osakond, telefon FROM rt_raamatud LEFT JOIN rt_osakonnad ON rt_raamatud.osakond=rt_osakonnad.osakond; +-----------------------+-------------+---------+ | LEFT(pealkiri, 20) | osakond | telefon | +-----------------------+-------------+---------+ | Arvutiaabits | NULL | NULL | | Mõõtmise alused | matemaatika | 6789344 | | Nutiprooviks lastele | matemaatika | 6789344 | | Eesti rahvalaulud. E | muusika | 6789343 | | Laulik. Simmaniduo j | muusika | 6789343 | | Pärimusmuusika noodi | muusika | 6789343 | +-----------------------+-------------+---------+ SELECT rt_osakonnad.osakond, (SELECT COUNT(*) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) AS kogus FROM rt_osakonnad; +-------------+-------+ | osakond | kogus | +-------------+-------+ | ajalugu | 0 | | kirjandus | 0 | | matemaatika | 2 | | muusika | 3 | +-------------+-------+ SELECT 'teadmata'; +----------+ | teadmata | +----------+ | teadmata | +----------+ SELECT COUNT(*) FROM rt_raamatud WHERE osakond IS NULL; +----------+ | COUNT(*) | +----------+ | 1 | +----------+ SELECT 'teadmata', COUNT(*) FROM rt_raamatud WHERE osakond IS NULL; +----------+----------+ | teadmata | COUNT(*) | +----------+----------+ | teadmata | 1 | +----------+----------+ 1 row in set (0.00 sec) SELECT rt_osakonnad.osakond, (SELECT COUNT(*) FROM rt_raamatud WHERE rt_raamatud.osakond=rt_osakonnad.osakond) AS kogus FROM rt_osakonnad UNION ALL SELECT 'teadmata', COUNT(*) FROM rt_raamatud WHERE osakond IS NULL; +-------------+-------+ | osakond | kogus | +-------------+-------+ | ajalugu | 0 | | kirjandus | 0 | | matemaatika | 2 | | muusika | 3 | | teadmata | 1 | +-------------+-------+