[ alfa-pro @ 12.02.2016. 10:33 ] @
Drustvo imam mali problem oko procedure koju pravim za app koja je za renta kar. 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) 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 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 ; 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 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. |