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.