Kaks tabelit maakonnad(id, maakonnanimi, rahvaarv) koolid (id, nimetus, lastearv, maakonna_id) CREATE TABLE maakonnad( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, maakonnanimi VARCHAR(30), rahvaarv INT ); CREATE TABLE koolid( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nimetus VARCHAR(50), lastearv INT, maakonna_id INT, FOREIGN KEY(maakonna_id) REFERENCES maakonnad(id) ); INSERT INTO maakonnad(maakonnanimi, rahvaarv) VALUES ('Läänemaa', 27000); INSERT INTO maakonnad(maakonnanimi, rahvaarv) VALUES ('Harjumaa', 525000); INSERT INTO maakonnad(maakonnanimi, rahvaarv) VALUES ('Lääne-Virumaa', 67000); INSERT INTO maakonnad(maakonnanimi, rahvaarv) VALUES ('Hiiumaa', 10000); mysql> SELECT * FROM maakonnad; +----+-----------------+----------+ | id | maakonnanimi | rahvaarv | +----+-----------------+----------+ | 1 | Läänemaa | 27000 | | 2 | Harjumaa | 525000 | | 3 | Lääne-Virumaa | 67000 | | 4 | Hiiumaa | 10000 | +----+-----------------+----------+ 4 rows in set (0.00 sec) INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Haapsalu Gümnaasium', 250, 1); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Haapsalu Wiedemanni Gümnaasium', 400, 1); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Kullamaa Keskkool', 170, 1); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Haapsalu Wiedemanni Gümnaasium', 400, 1); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Tallinna 37. Keskkool', 600, 2); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Pelgulinna Gümnaasium', 850, 2); INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES('Kärdla Ühisgümnaasium', 500, 4); mysql> SELECT * FROM koolid; +----+---------------------------------+----------+-------------+ | id | nimetus | lastearv | maakonna_id | +----+---------------------------------+----------+-------------+ | 1 | Haapsalu Gümnaasium | 250 | 1 | | 2 | Haapsalu Wiedemanni Gümnaasium | 400 | 1 | | 3 | Kullamaa Keskkool | 170 | 1 | | 4 | Tallinna 37. Keskkool | 600 | 2 | | 5 | Pelgulinna Gümnaasium | 850 | 2 | | 6 | Kärdla Ühisgümnaasium | 500 | 4 | +----+---------------------------------+----------+-------------+ Kooli nimi koos maakonna nimega Standard-SQL süntaks: SELECT koolid.nimetus, maakonnanimi FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; mysql> SELECT koolid.nimetus, maakonnanimi -> FROM koolid, maakonnad -> WHERE koolid.maakonna_id=maakonnad.id; +---------------------------------+--------------+ | nimetus | maakonnanimi | +---------------------------------+--------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | Kärdla Ühisgümnaasium | Hiiumaa | +---------------------------------+--------------+ 6 rows in set (0.00 sec) Sama asi: SELECT koolid.nimetus, maakonnanimi FROM koolid INNER JOIN maakonnad ON koolid.maakonna_id=maakonnad.id; +---------------------------------+--------------+ | nimetus | maakonnanimi | +---------------------------------+--------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | Kärdla Ühisgümnaasium | Hiiumaa | +---------------------------------+--------------+ Parempoolsest tabelist näidatakse ka need tulbad, millele ei viidata. (Lääne-Virumaa) SELECT koolid.nimetus, maakonnanimi FROM koolid RIGHT JOIN maakonnad ON koolid.maakonna_id=maakonnad.id; +---------------------------------+-----------------+ | nimetus | maakonnanimi | +---------------------------------+-----------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | NULL | Lääne-Virumaa | | Kärdla Ühisgümnaasium | Hiiumaa | +---------------------------------+-----------------+ INSERT INTO koolid (nimetus, lastearv, maakonna_id) VALUES ('Viiulimängijate suvekool', 80, NULL); SELECT koolid.nimetus, maakonnanimi FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; +---------------------------------+--------------+ | nimetus | maakonnanimi | +---------------------------------+--------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | Kärdla Ühisgümnaasium | Hiiumaa | +---------------------------------+--------------+ (Maakonnata kooli ei paista) Vasakust tabelist kõikide ridade nägemiseks LEFT JOIN SELECT koolid.nimetus, maakonnanimi FROM koolid LEFT JOIN maakonnad ON koolid.maakonna_id=maakonnad.id; +---------------------------------+--------------+ | nimetus | maakonnanimi | +---------------------------------+--------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | Kärdla Ühisgümnaasium | Hiiumaa | | Viiulimängijate suvekool | NULL | +---------------------------------+--------------+ Nimetused üheskoos liidetuna samasse tulpa. SELECT nimetus FROM koolid UNION SELECT maakonnanimi FROM maakonnad; mysql> SELECT nimetus FROM koolid -> UNION -> SELECT maakonnanimi FROM maakonnad; +---------------------------------+ | nimetus | +---------------------------------+ | Haapsalu Gümnaasium | | Haapsalu Wiedemanni Gümnaasium | | Kullamaa Keskkool | | Tallinna 37. Keskkool | | Pelgulinna Gümnaasium | | Kärdla Ühisgümnaasium | | Viiulimängijate suvekool | | Läänemaa | | Harjumaa | | Lääne-Virumaa | | Hiiumaa | +---------------------------------+ Andmetabeli loomine päringu käigus: CREATE TABLE koolidmaakondadega as SELECT koolid.nimetus, maakonnanimi FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; mysql> SELECT * FROM koolidmaakondadega; +---------------------------------+--------------+ | nimetus | maakonnanimi | +---------------------------------+--------------+ | Haapsalu Gümnaasium | Läänemaa | | Haapsalu Wiedemanni Gümnaasium | Läänemaa | | Kullamaa Keskkool | Läänemaa | | Tallinna 37. Keskkool | Harjumaa | | Pelgulinna Gümnaasium | Harjumaa | | Kärdla Ühisgümnaasium | Hiiumaa | +---------------------------------+--------------+ Lisamine olemasolevasse tabelisse: INSERT INTO koolidmaakondadega SELECT koolid.nimetus, maakonnanimi FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; Ülesanded andmete uurimiseks: * Näita iga kooli juures, mitu protsenti moodustab selle kooli õpilaste arv maakonna rahvastikust * Näita iga maakonna juures, mitu protsenti rahvastikust käib siin tabelis kirjeldatud koolides. SELECT koolid.nimetus, lastearv, rahvaarv, lastearv*100/rahvaarv FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; +---------------------------------+----------+----------+-----------------------+ | nimetus | lastearv | rahvaarv | lastearv*100/rahvaarv | +---------------------------------+----------+----------+-----------------------+ | Haapsalu Gümnaasium | 250 | 27000 | 0.9259 | | Haapsalu Wiedemanni Gümnaasium | 400 | 27000 | 1.4815 | | Kullamaa Keskkool | 170 | 27000 | 0.6296 | | Tallinna 37. Keskkool | 600 | 525000 | 0.1143 | | Pelgulinna Gümnaasium | 850 | 525000 | 0.1619 | | Kärdla Ühisgümnaasium | 500 | 10000 | 5.0000 | +---------------------------------+----------+----------+-----------------------+ SELECT koolid.nimetus, lastearv*100/rahvaarv as protsent FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id; +---------------------------------+----------+ | nimetus | protsent | +---------------------------------+----------+ | Haapsalu Gümnaasium | 0.9259 | | Haapsalu Wiedemanni Gümnaasium | 1.4815 | | Kullamaa Keskkool | 0.6296 | | Tallinna 37. Keskkool | 0.1143 | | Pelgulinna Gümnaasium | 0.1619 | | Kärdla Ühisgümnaasium | 5.0000 | +---------------------------------+----------+ SELECT SUM(lastearv)*100/rahvaarv as koolilasteprotsent, maakonnanimi FROM koolid, maakonnad WHERE koolid.maakonna_id=maakonnad.id GROUP BY maakonnad.id; Kahe tabeli ülesanded: Keerukuse näide: Aluseks tabelid tantsijad (id, eesnimi, x, y, agentuuri_id) agentuurid (id, agentuurinimi) * Näita tantsijate nimed agentuuride kaupa * Loe eraldi tabelisse tulemus, kus on kirjas agentuuri nimi ning sealt olevate tantsijate arv * Leia iga agentuuri kohta lavale kõige lähema tantsija kaugus * Leia iga agentuuri tantsijate keskmine kaugus lavast * Leia agentuurid, kust pole ühtegi tantsijat