Luodaan asiakastietokanta
CREATE TABLE IF NOT EXISTS `asiakkaat` ( `id` int(11) NOT NULL AUTO_INCREMENT, `etumini` text NOT NULL, `sukunimi` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Lisätään muutama asiakas
INSERT INTO `asiakkaat` (`id`, `etumini`, `sukunimi`) VALUES (1, 'Roope', 'Ankka'), (2, 'Hannu', 'Hanhi'), (3, 'Milla', 'Magia'), (4, 'Kroisos', 'Pennonen'), (5, 'Musta', 'Pekka'), (6, 'Hessu', 'Hopo');
Koska kirjastosta lainataan myös kirjoja, niin tehdä tietokanta lainat.
CREATE TABLE IF NOT EXISTS `lainat` ( `kirjan_id` int(11) NOT NULL, `asiakkaan_id` int(11) NOT NULL, `palautuspvm` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Lisätään muutama laina kantaan.
INSERT INTO `lainat` (`kirjan_id`, `asiakkaan_id`, `palautuspvm`) VALUES (1, 2, 0), (3, 1, 0);
Miksi lainat ovat eri kannassa? Miten yhdistetään eri tietokannat? Tietokannat voi yhdistää left join tai right join komennoilla. Katsotaan laina-kannasta, mitkä kirjat ovat menossa.
SELECT * FROM `lainat` LEFT JOIN kirjat ON kirjan_id = kirjat.id
Lisätään vielä asiakkaan nimet:
SELECT * FROM `lainat` LEFT JOIN kirjat ON kirjan_id = kirjat.id LEFT JOIN asiakkaat ON asiakkaan_id = asiakkaat.id
Valinta SELECT * FROM asiakkaat LEFT JOIN lainat ON asiakkaan_id = asiakkaat.id; kertoo kaikki asiakkaat ja heidän lainat. Komento SELECT * FROM asiakkaat RIGHT JOIN lainat ON asiakkaan_id = asiakkaat.id; kertoo vain asiakkaat, joilla on lainoja.
Valinnalla SELECT * FROM kirjat LEFT JOIN lainat ON id=kirjan_id saadaan kirjataulukko, jossa näkyy, onko kirja lainassa vai hyllyssä (lainaajatiedot NULL).
Toteuta lainaus-toiminto.
Tee sivu, jossa on kaksi valintataulukkoa. Toisesta voidaan valita lainaaja ja toisesta kirja. Laina-aika on kaksi viikkoa time() + (2* 7 * 24 * 60 * 60).
(kannassa lainat voisi olla palautuspvm lisäoptiona DEFAULT DATE_ADD(NOW(), INTERVAL 14 DAY)), jolloin tietokannassa olisi suoraan palautuspäivämäärä muodossa VVVV-KK-PP, nyt se on sekunteina 1970 vuoden jälkeen ja päivämäärämuunnokset pitää nyt tehdä PHP:ssa.
