Spordibaas -- MySQL Workbench Forward Engineering SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- Schema if15_jaagup_3 -- ----------------------------------------------------- -- ----------------------------------------------------- -- Schema if15_jaagup_3 -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `if15_jaagup_3` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `if15_jaagup_3` ; -- ----------------------------------------------------- -- Table `if15_jaagup_3`.`sport_isikud` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_3`.`sport_isikud` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_3`.`sport_isikud` ( `isikukood` CHAR(11) NOT NULL COMMENT '', `eesnimi` VARCHAR(45) NULL COMMENT '', `perekonnanimi` VARCHAR(45) NULL COMMENT '', `maakond` VARCHAR(45) NULL COMMENT '', PRIMARY KEY (`isikukood`) COMMENT '') ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `if15_jaagup_3`.`sport_trennid` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_3`.`sport_trennid` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_3`.`sport_trennid` ( `kood` VARCHAR(20) NOT NULL COMMENT '', `kuutasu` INT NOT NULL COMMENT '', PRIMARY KEY (`kood`) COMMENT '') ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `if15_jaagup_3`.`sport_isik_trennis` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_3`.`sport_isik_trennis` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_3`.`sport_isik_trennis` ( `isikukood` CHAR(11) NOT NULL COMMENT '', `trennikood` VARCHAR(20) NOT NULL COMMENT '', `algusaasta` INT NULL COMMENT '', PRIMARY KEY (`isikukood`, `trennikood`) COMMENT '', INDEX `fk_sport_isik_trennis_sport_trennid1_idx` (`trennikood` ASC) COMMENT '', CONSTRAINT `fk_sport_isik_trennis_sport_isikud` FOREIGN KEY (`isikukood`) REFERENCES `if15_jaagup_3`.`sport_isikud` (`isikukood`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_sport_isik_trennis_sport_trennid1` FOREIGN KEY (`trennikood`) REFERENCES `if15_jaagup_3`.`sport_trennid` (`kood`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; -- ----------------------------------------------------- -- Data for table `if15_jaagup_3`.`sport_isikud` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_3`; INSERT INTO `if15_jaagup_3`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('39011060231', 'Juku', 'Tamm', 'Harjumaa'); INSERT INTO `if15_jaagup_3`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('49011120241', 'Kati', 'Tamm', 'Harjumaa'); INSERT INTO `if15_jaagup_3`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('38909010234', 'Mati', 'Kask', 'Raplamaa'); COMMIT; -- ----------------------------------------------------- -- Data for table `if15_jaagup_3`.`sport_trennid` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_3`; INSERT INTO `if15_jaagup_3`.`sport_trennid` (`kood`, `kuutasu`) VALUES ('korvpall1990', 25); INSERT INTO `if15_jaagup_3`.`sport_trennid` (`kood`, `kuutasu`) VALUES ('korvpall1980', 30); COMMIT; -- ----------------------------------------------------- -- Data for table `if15_jaagup_3`.`sport_isik_trennis` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_3`; INSERT INTO `if15_jaagup_3`.`sport_isik_trennis` (`isikukood`, `trennikood`, `algusaasta`) VALUES ('39011060231', 'korvpall1990', 2005); INSERT INTO `if15_jaagup_3`.`sport_isik_trennis` (`isikukood`, `trennikood`, `algusaasta`) VALUES ('49011120241', 'korvpall1990', 2006); COMMIT; mysql> SELECT * FROM sport_isikud; +-------------+---------+---------------+----------+ | isikukood | eesnimi | perekonnanimi | maakond | +-------------+---------+---------------+----------+ | 38909010234 | Mati | Kask | Raplamaa | | 39011060231 | Juku | Tamm | Harjumaa | | 49011120241 | Kati | Tamm | Harjumaa | +-------------+---------+---------------+----------+ 3 rows in set (0.00 sec) mysql> SELECT * FROM sport_isik_trennis; +-------------+--------------+------------+ | isikukood | trennikood | algusaasta | +-------------+--------------+------------+ | 39011060231 | korvpall1990 | 2005 | | 49011120241 | korvpall1990 | 2006 | +-------------+--------------+------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM sport_trennid; +--------------+---------+ | kood | kuutasu | +--------------+---------+ | korvpall1980 | 30 | | korvpall1990 | 25 | +--------------+---------+ SELECT eesnimi, kood, kuutasu FROM sport_isikud JOIN sport_isik_trennis ON sport_isik_trennis.isikukood=sport_isikud.isikukood JOIN sport_trennid ON sport_isik_trennis.trennikood=sport_trennid.kood; +---------+--------------+---------+ | eesnimi | kood | kuutasu | +---------+--------------+---------+ | Juku | korvpall1990 | 25 | | Kati | korvpall1990 | 25 | +---------+--------------+---------+ -- Leidke iga trenni kohta, mitu isikut seal käib ning mitu eurot kuutasu makstakse -- MySQL Workbench Forward Engineering SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- Schema if15_jaagup_1 -- ----------------------------------------------------- -- ----------------------------------------------------- -- Schema if15_jaagup_1 -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `if15_jaagup_1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `if15_jaagup_1` ; -- ----------------------------------------------------- -- Table `if15_jaagup_1`.`sport_maakonnad` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_1`.`sport_maakonnad` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_1`.`sport_maakonnad` ( `maakonnanimi` VARCHAR(30) NOT NULL COMMENT '', `maakonnakeskus` VARCHAR(45) NOT NULL COMMENT '', `rahvaarv` INT NULL COMMENT '', PRIMARY KEY (`maakonnanimi`) COMMENT '') ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `if15_jaagup_1`.`sport_isikud` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_1`.`sport_isikud` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_1`.`sport_isikud` ( `isikukood` CHAR(11) NOT NULL COMMENT '', `eesnimi` VARCHAR(45) NOT NULL COMMENT '', `perekonnanimi` VARCHAR(45) NOT NULL COMMENT '', `maakond` VARCHAR(30) NOT NULL COMMENT '', PRIMARY KEY (`isikukood`) COMMENT '', INDEX `fk_sport_isikud_sport_maakonnad1_idx` (`maakond` ASC) COMMENT '', CONSTRAINT `fk_sport_isikud_sport_maakonnad1` FOREIGN KEY (`maakond`) REFERENCES `if15_jaagup_1`.`sport_maakonnad` (`maakonnanimi`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `if15_jaagup_1`.`sport_trennid` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_1`.`sport_trennid` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_1`.`sport_trennid` ( `kood` VARCHAR(20) NOT NULL COMMENT '', `kuutasu` INT NOT NULL COMMENT '', `treeneri_isikukood` CHAR(11) NOT NULL COMMENT '', `maakond` VARCHAR(30) NOT NULL COMMENT '', PRIMARY KEY (`kood`) COMMENT '', INDEX `fk_sport_trennid_sport_isikud1_idx` (`treeneri_isikukood` ASC) COMMENT '', INDEX `fk_sport_trennid_sport_maakonnad1_idx` (`maakond` ASC) COMMENT '', CONSTRAINT `fk_sport_trennid_sport_isikud1` FOREIGN KEY (`treeneri_isikukood`) REFERENCES `if15_jaagup_1`.`sport_isikud` (`isikukood`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_sport_trennid_sport_maakonnad1` FOREIGN KEY (`maakond`) REFERENCES `if15_jaagup_1`.`sport_maakonnad` (`maakonnanimi`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `if15_jaagup_1`.`sport_isik_trennis` -- ----------------------------------------------------- DROP TABLE IF EXISTS `if15_jaagup_1`.`sport_isik_trennis` ; CREATE TABLE IF NOT EXISTS `if15_jaagup_1`.`sport_isik_trennis` ( `isikukood` CHAR(11) NOT NULL COMMENT '', `trennikood` VARCHAR(20) NOT NULL COMMENT '', `algusaasta` INT NULL COMMENT '', PRIMARY KEY (`isikukood`, `trennikood`) COMMENT '', INDEX `fk_sport_isik_trennis_sport_trennid1_idx` (`trennikood` ASC) COMMENT '', CONSTRAINT `fk_sport_isik_trennis_sport_isikud` FOREIGN KEY (`isikukood`) REFERENCES `if15_jaagup_1`.`sport_isikud` (`isikukood`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_sport_isik_trennis_sport_trennid1` FOREIGN KEY (`trennikood`) REFERENCES `if15_jaagup_1`.`sport_trennid` (`kood`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; -- ----------------------------------------------------- -- Data for table `if15_jaagup_1`.`sport_maakonnad` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_1`; INSERT INTO `if15_jaagup_1`.`sport_maakonnad` (`maakonnanimi`, `maakonnakeskus`, `rahvaarv`) VALUES ('Harjumaa', 'Tallinn', 575000); INSERT INTO `if15_jaagup_1`.`sport_maakonnad` (`maakonnanimi`, `maakonnakeskus`, `rahvaarv`) VALUES ('Raplamaa', 'Rapla', 34900); INSERT INTO `if15_jaagup_1`.`sport_maakonnad` (`maakonnanimi`, `maakonnakeskus`, `rahvaarv`) VALUES ('Lääne-Virumaa', 'Rakvere', 59800); COMMIT; -- ----------------------------------------------------- -- Data for table `if15_jaagup_1`.`sport_isikud` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_1`; INSERT INTO `if15_jaagup_1`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('39011060231', 'Juku', 'Tamm', 'Harjumaa'); INSERT INTO `if15_jaagup_1`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('49011120241', 'Kati', 'Tamm', 'Harjumaa'); INSERT INTO `if15_jaagup_1`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('38909010234', 'Mati', 'Kask', 'Raplamaa'); INSERT INTO `if15_jaagup_1`.`sport_isikud` (`isikukood`, `eesnimi`, `perekonnanimi`, `maakond`) VALUES ('36503020110', 'Madis', 'Jalakas', 'Raplamaa'); COMMIT; -- ----------------------------------------------------- -- Data for table `if15_jaagup_1`.`sport_trennid` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_1`; INSERT INTO `if15_jaagup_1`.`sport_trennid` (`kood`, `kuutasu`, `treeneri_isikukood`, `maakond`) VALUES ('korvpall1990', 25, '36503020110', 'Raplamaa'); INSERT INTO `if15_jaagup_1`.`sport_trennid` (`kood`, `kuutasu`, `treeneri_isikukood`, `maakond`) VALUES ('korvpall1980', 30, '36503020110', 'Harjumaa'); COMMIT; -- ----------------------------------------------------- -- Data for table `if15_jaagup_1`.`sport_isik_trennis` -- ----------------------------------------------------- START TRANSACTION; USE `if15_jaagup_1`; INSERT INTO `if15_jaagup_1`.`sport_isik_trennis` (`isikukood`, `trennikood`, `algusaasta`) VALUES ('39011060231', 'korvpall1990', 2005); INSERT INTO `if15_jaagup_1`.`sport_isik_trennis` (`isikukood`, `trennikood`, `algusaasta`) VALUES ('49011120241', 'korvpall1990', 2006); COMMIT; +-------------+---------+---------------+----------+ | isikukood | eesnimi | perekonnanimi | maakond | +-------------+---------+---------------+----------+ | 36503020110 | Madis | Jalakas | Raplamaa | | 38909010234 | Mati | Kask | Raplamaa | | 39011060231 | Juku | Tamm | Harjumaa | | 49011120241 | Kati | Tamm | Harjumaa | +-------------+---------+---------------+----------+ 4 rows in set (0.00 sec) mysql> select * from sport_trennid; +--------------+---------+--------------------+----------+ | kood | kuutasu | treeneri_isikukood | maakond | +--------------+---------+--------------------+----------+ | korvpall1980 | 30 | 36503020110 | Harjumaa | | korvpall1990 | 25 | 36503020110 | Raplamaa | +--------------+---------+--------------------+----------+ 2 rows in set (0.00 sec) mysql> select * from sport_maakonnad; +-----------------+----------------+----------+ | maakonnanimi | maakonnakeskus | rahvaarv | +-----------------+----------------+----------+ | Harjumaa | Tallinn | 575000 | | Lääne-Virumaa | Rakvere | 59800 | | Raplamaa | Rapla | 34900 | +-----------------+----------------+----------+ 3 rows in set (0.00 sec) mysql> select * from sport_isik_trennis; +-------------+--------------+------------+ | isikukood | trennikood | algusaasta | +-------------+--------------+------------+ | 39011060231 | korvpall1990 | 2005 | | 49011120241 | korvpall1990 | 2006 | +-------------+--------------+------------+ SELECT eesnimi, sport_isikud.maakond, kood, kuutasu, sport_trennid.maakond FROM sport_isikud JOIN sport_isik_trennis ON sport_isik_trennis.isikukood=sport_isikud.isikukood JOIN sport_trennid ON sport_isik_trennis.trennikood=sport_trennid.kood; INSERT INTO sport_isik_trennis VALUES ('38909010234', 'korvpall1980', 2013); -- iga maakonna kohta, mitu trenni seal on SELECT maakonnanimi FROM sport_maakonnad; SELECT maakonnanimi, (SELECT COUNT(*) FROM sport_trennid WHERE sport_trennid.maakond=sport_maakonnad.maakonnanimi) as kogus FROM sport_maakonnad; +-----------------+-------+ | maakonnanimi | kogus | +-----------------+-------+ | Harjumaa | 1 | | Lääne-Virumaa | 0 | | Raplamaa | 1 | +-----------------+-------+ SELECT maakonnanimi, COUNT(*) FROM sport_maakonnad JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi GROUP BY maakonnanimi; +--------------+----------+ | maakonnanimi | COUNT(*) | +--------------+----------+ | Harjumaa | 1 | | Raplamaa | 1 | +--------------+----------+ SELECT maakonnanimi, COUNT(sport_trennid.kood) FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi GROUP BY maakonnanimi; +-----------------+---------------------------+ | maakonnanimi | COUNT(sport_trennid.kood) | +-----------------+---------------------------+ | Harjumaa | 1 | | Lääne-Virumaa | 0 | | Raplamaa | 1 | +-----------------+---------------------------+ SELECT * FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi; +-----------------+----------------+----------+--------------+---------+--------------------+----------+ | maakonnanimi | maakonnakeskus | rahvaarv | kood | kuutasu | treeneri_isikukood | maakond | +-----------------+----------------+----------+--------------+---------+--------------------+----------+ | Harjumaa | Tallinn | 575000 | korvpall1980 | 30 | 36503020110 | Harjumaa | | Lääne-Virumaa | Rakvere | 59800 | NULL | NULL | NULL | NULL | | Raplamaa | Rapla | 34900 | korvpall1990 | 25 | 36503020110 | Raplamaa | +-----------------+----------------+----------+--------------+---------+--------------------+----------+ SELECT * FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi LEFT JOIN sport_isik_trennis ON sport_isik_trennis.trennikood=sport_trennid.kood; +-----------------+----------------+----------+--------------+---------+--------------------+----------+-------------+--------------+------------+ | maakonnanimi | maakonnakeskus | rahvaarv | kood | kuutasu | treeneri_isikukood | maakond | isikukood | trennikood | algusaasta | +-----------------+----------------+----------+--------------+---------+--------------------+----------+-------------+--------------+------------+ | Harjumaa | Tallinn | 575000 | korvpall1980 | 30 | 36503020110 | Harjumaa | 38909010234 | korvpall1980 | 2013 | | Harjumaa | Tallinn | 575000 | korvpall1980 | 30 | 36503020110 | Harjumaa | 39011060231 | korvpall1980 | 2013 | | Lääne-Virumaa | Rakvere | 59800 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | Raplamaa | Rapla | 34900 | korvpall1990 | 25 | 36503020110 | Raplamaa | 39011060231 | korvpall1990 | 2005 | | Raplamaa | Rapla | 34900 | korvpall1990 | 25 | 36503020110 | Raplamaa | 49011120241 | korvpall1990 | 2006 | +-----------------+----------------+----------+--------------+---------+--------------------+----------+-------------+--------------+------------+ SELECT maakonnanimi, COUNT(sport_trennid.kood) FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi LEFT JOIN sport_isik_trennis ON sport_isik_trennis.trennikood=sport_trennid.kood GROUP BY maakonnanimi; +-----------------+---------------------------+ | maakonnanimi | COUNT(sport_trennid.kood) | +-----------------+---------------------------+ | Harjumaa | 2 | | Lääne-Virumaa | 0 | | Raplamaa | 2 | +-----------------+---------------------------+ SELECT maakonnanimi, sport_isikud.maakond FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi LEFT JOIN sport_isik_trennis ON sport_isik_trennis.trennikood=sport_trennid.kood LEFT JOIN sport_isikud ON sport_isik_trennis.isikukood=sport_isikud.isikukood; +-----------------+----------+ | maakonnanimi | maakond | +-----------------+----------+ | Harjumaa | Raplamaa | | Harjumaa | Harjumaa | | Lääne-Virumaa | NULL | | Raplamaa | Harjumaa | | Raplamaa | Harjumaa | +-----------------+----------+ SELECT maakonnanimi, GROUP_CONCAT(sport_isikud.maakond) FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi LEFT JOIN sport_isik_trennis ON sport_isik_trennis.trennikood=sport_trennid.kood LEFT JOIN sport_isikud ON sport_isik_trennis.isikukood=sport_isikud.isikukood GROUP BY maakonnanimi; +-----------------+------------------------------------+ | maakonnanimi | GROUP_CONCAT(sport_isikud.maakond) | +-----------------+------------------------------------+ | Harjumaa | Raplamaa,Harjumaa | | Lääne-Virumaa | NULL | | Raplamaa | Harjumaa,Harjumaa | +-----------------+------------------------------------+ SELECT maakonnanimi,sport_isikud.maakond, COUNT(sport_isikud.maakond) FROM sport_maakonnad LEFT JOIN sport_trennid ON sport_trennid.maakond=sport_maakonnad.maakonnanimi LEFT JOIN sport_isik_trennis ON sport_isik_trennis.trennikood=sport_trennid.kood LEFT JOIN sport_isikud ON sport_isik_trennis.isikukood=sport_isikud.isikukood GROUP BY maakonnanimi, sport_isikud.maakond; +-----------------+----------+-----------------------------+ | maakonnanimi | maakond | COUNT(sport_isikud.maakond) | +-----------------+----------+-----------------------------+ | Harjumaa | Harjumaa | 1 | | Harjumaa | Raplamaa | 1 | | Lääne-Virumaa | NULL | 0 | | Raplamaa | Harjumaa | 2 | +-----------------+----------+-----------------------------+