Covek ima dve vrste cena (Sezonske cene i van sezonske cene)
Ja sam napravio tablelu sezone gde upisujem ime sezone i pocetak kraj. Pomocu pocetka i kraja i izabranih datuma od strane korisnika ja utvrdjujem
cenu i prikazujem je. Treba da se prikaze cena za taj neki period
Sezone
Code:
ID_Sezone Pocetak Kraj Naziv_Sezone_Sr Naziv_Sezone_En Naziv_Sezone_Ru
--------- ---------- ---------- --------------- --------------- -----------------
1 2016-05-01 2016-08-31 Sezonka (NULL) (NULL)
2 2016-09-01 2016-12-31 Vansezonska (NULL) (NULL)
ID_Sezone Pocetak Kraj Naziv_Sezone_Sr Naziv_Sezone_En Naziv_Sezone_Ru
--------- ---------- ---------- --------------- --------------- -----------------
1 2016-05-01 2016-08-31 Sezonka (NULL) (NULL)
2 2016-09-01 2016-12-31 Vansezonska (NULL) (NULL)
Cene sezona
Code:
ID Cena ID_Sezone ID_Automobila
------ ------ --------- ---------------
1 150 1 1
2 120 2 2
3 70 1 3
4 60 1 4
5 220 2 5
6 457 2 6
ID Cena ID_Sezone ID_Automobila
------ ------ --------- ---------------
1 150 1 1
2 120 2 2
3 70 1 3
4 60 1 4
5 220 2 5
6 457 2 6
Ova gornja tabela cene sezona upisuje id sezone i cenu za svaki automobil. Svako vozilo ima svoju cenu.
Evo procedure
Code:
DELIMITER $$
DROP PROCEDURE IF EXISTS `izracunajCenu`$$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `panauto_site`.`izracunajCenu`(pocetak DATE, kraj DATE)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SELECT a.name, s.Naziv_Sezone_Sr, c.Cena
FROM cene_sezona c
INNER JOIN sezone s ON s.ID_Sezone = c.ID_Sezone
INNER JOIN automobili a ON a.ID = c.ID_Automobila
WHERE s.Pocetak <= pocetak AND s.Kraj >= kraj BETWEEN s.Pocetak AND s.Kraj;
END$$
DELIMITER ;
DELIMITER $$
DROP PROCEDURE IF EXISTS `izracunajCenu`$$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `panauto_site`.`izracunajCenu`(pocetak DATE, kraj DATE)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SELECT a.name, s.Naziv_Sezone_Sr, c.Cena
FROM cene_sezona c
INNER JOIN sezone s ON s.ID_Sezone = c.ID_Sezone
INNER JOIN automobili a ON a.ID = c.ID_Automobila
WHERE s.Pocetak <= pocetak AND s.Kraj >= kraj BETWEEN s.Pocetak AND s.Kraj;
END$$
DELIMITER ;
E sada kada pozovem:
CALL izracunajCenu('2016-05-01','2016-08-31');
dobijem listu:
Code:
name Naziv_Sezone_Sr Cena
---------- --------------- --------
Opel Corsa Sezonka 150
VW Polo Sezonka 70
Fiat Bravo Sezonka 60
name Naziv_Sezone_Sr Cena
---------- --------------- --------
Opel Corsa Sezonka 150
VW Polo Sezonka 70
Fiat Bravo Sezonka 60
A ako ukucam CALL izracunajCenu('2016-08-01','2016-09-31'); ja i dalje dobijam lisu sa sezonskim cenama.
Nesto ja ovde u WHERE nisam uradio kako treba i on mi na osnovu unesenog datuma ne filtrira kako treba.
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.