2025-04-23 16:56:08 +02:00

42 lines
1.2 KiB
SQL

create or replace view public.v_camp as
with female(used, fk_camp) as (
select count(1), fk_camp
from t_person
where progress = 'approved'
and sex = 'female'
and camprole = 'student'
group by fk_camp
), male(used, fk_camp) as (
select count(1), fk_camp
from t_person
where progress = 'approved'
and sex = 'male'
and camprole = 'student'
group by fk_camp
) select c.pk,
(c.depart < now()) as is_over,
c.name,
c.arrive,
c.depart,
date_part('isoyear'::text, c.arrive) as year,
l.name as location_name,
c.min_age,
c.max_age,
coalesce(c.min_teacherage, c.max_age + 2) as min_teacherage,
l.url,
c.price,
c.countries,
c.fk_document,
c.beds_female,
c.beds_male,
c.blocked_beds_female,
c.blocked_beds_male,
coalesce(male.used, 0) as used_beds_male,
coalesce(female.used, 0) as used_beds_female,
c.start_booking,
(c.start_booking < now()) as booking_has_started
from public.t_camp c
left join public.t_location l on c.fk_location = l.pk
left join male on male.fk_camp = c.pk
left join female on female.fk_camp = c.pk;