Forum Moderators: open
// I calculate the prices using 2 diferent types of cases to get the price for the dates the customer choosed in a form:
(CASE WHEN ('$arrival' BETWEEN feb_start AND feb_fin and '$departure' BETWEEN feb_start AND feb_fin)
THEN sum(febbr) * (TO_DAYS('$departure') - TO_DAYS('$arrival'))ELSE NULL END) AS price12,
(CASE WHEN ('$arrival' BETWEEN feb_start AND feb_fin and '$departure' > feb_fin)
THEN sum(febbr) * (TO_DAYS(march_start) - TO_DAYS('$arrival'))ELSE NULL END) AS price13,
(CASE WHEN ('$arrival' < feb_start and '$departure' BETWEEN feb_start AND feb_fin)
THEN sum(febbr) * (TO_DAYS('$departure') - TO_DAYS(feb_start))ELSE NULL END ) AS price14,
(CASE WHEN ('$arrival' BETWEEN march_start AND march_fin and '$departure' BETWEEN march_start AND march_fin)
THEN sum(marzobr) * (TO_DAYS('$departure') - TO_DAYS('$arrival'))ELSE NULL END) AS price15,
(CASE WHEN ('$arrival' BETWEEN march_start AND march_fin and '$departure' > march_fin)
THEN sum(marzobr) * (TO_DAYS(april_start) - TO_DAYS('$arrival'))ELSE NULL END ) AS price16,
(CASE WHEN ('$arrival' < march_start and '$departure' BETWEEN march_start AND march_fin)
THEN sum(marzobr) * (TO_DAYS('$departure') - TO_DAYS(march_start))ELSE NULL END ) AS price17,
(CASE WHEN ('$arrival' BETWEEN april_start AND april_fin and '$departure' BETWEEN april_start AND april_fin)
THEN sum(abrilbr) * (TO_DAYS('$departure') - TO_DAYS('$arrival'))ELSE NULL END) AS price21,
(CASE WHEN ('$arrival' BETWEEN april_start AND april_fin and '$departure' > april_fin)
THEN sum(abrilbr) * (TO_DAYS(mayo_inicio) - TO_DAYS('$arrival'))ELSE NULL END) AS price22,
(CASE WHEN ('$arrival' < april_start and '$departure' BETWEEN april_start AND april_fin)
THEN sum(abrilbr) * (TO_DAYS('$departure') - TO_DAYS(april_start) )ELSE NULL END) AS price23,
etc.
(CASE WHEN ('$arrival' < feb_start and '$departure' > feb_fin)
THEN sum(febbr) * (TO_DAYS(march_start) - TO_DAYS(feb_inicio))ELSE NULL END) AS price46,
(CASE WHEN ('$arrival' < march_start and '$departure' > march_fin)
THEN sum(marzobr) * (TO_DAYS(april_start) - TO_DAYS(march_start))ELSE NULL END) AS price47,
(CASE WHEN ('$arrival' < april_start and '$departure' > april_fin)
THEN sum(abrilbr) * (TO_DAYS(may_start) - TO_DAYS(april_start))ELSE NULL END) AS price49,
etc.
//then I pass the value of the queries rows into a normal php var:
$price23=$row["price23"];
$price24=$row["price24"];
$price25=$row["price25"];
etc.
//then using php I sum the php vars to get the total price
$total=$price+$price1+$price2+$price3+$price4+$price5+$price6+$price7
select @y:=year(now()) y,
@c:= @y DIV 100 c,
@n:= @y - 19 * ( @y DIV 19 ) n,
@k:= ( @c - 17 ) DIV 25 k,
@i:= @c - @c DIV 4 - ( @c - @k ) DIV 3 + 19 * @n + 15 i1,
@i:= @i - 30 * ( @i DIV 30 ) i2,
@i:= @i - ( @i DIV 28 ) * (1 - ( @i DIV 28 ) * ( 29 DIV ( @i + 1 ) ) * ( ( 21 - @n ) DIV 11 ) ) i3,
@j:= @y + @y DIV 4 + @i + 2 - @c + @c DIV 4 j1,
@j:= @j - 7 * ( @j DIV 7 ) j2,
@l:= @i - @j l,
@m:= 3 + ( @l + 40 ) DIV 44 m,
@d:= @l + 28 - 31 * ( @m DIV 4 ) d,
cast(concat(@y,'-',@m,'-',@d) as date) easter
select some_field,easter.easter
from some_table,
(select @y:=year(now()) y,
@c:= @y DIV 100 c,
@n:= @y - 19 * ( @y DIV 19 ) n,
@k:= ( @c - 17 ) DIV 25 k,
@i:= @c - @c DIV 4 - ( @c - @k ) DIV 3 + 19 * @n + 15 i1,
@i:= @i - 30 * ( @i DIV 30 ) i2,
@i:= @i - ( @i DIV 28 ) * (1 - ( @i DIV 28 ) * ( 29 DIV ( @i + 1 ) ) * ( ( 21 - @n ) DIV 11 ) ) i3,
@j:= @y + @y DIV 4 + @i + 2 - @c + @c DIV 4 j1,
@j:= @j - 7 * ( @j DIV 7 ) j2,
@l:= @i - @j l,
@m:= 3 + ( @l + 40 ) DIV 44 m,
@d:= @l + 28 - 31 * ( @m DIV 4 ) d,
cast(concat(@y,'-',@m,'-',@d) as date)) easter
where some_table.some_date=easter.easter;
+------------+------------+
| some_field | easter |
+------------+------------+
| 1 | 2011-04-24 |
| 2 | 2011-04-24 |
| 3 | 2011-04-24 |
| 4 | 2011-04-24 |
| 5 | 2011-04-24 |
| 6 | 2011-04-24 |
| 7 | 2011-04-24 |
| 8 | 2011-04-24 |
+------------+------------+