DatabaseEtc

Fra Nesøya 17mai
Hopp til: navigasjon, søk

Opprett ny gruppe

 insert into grp(name,description) values('team17mai_2009','Foreldre i 5. trinn, 17 mai team 2009');
 insert into grp(name,description) values('nesoya98','Nesøya Skole, Alle 98er');

Bruk grp_import.php

Se GoogleDoc Trinn 5 2008-2009


Ikke støtte for å slå sammen familier

 select * from family f1,family f2 where f1.id!=f2.id and f1.homephone=f2.homephone and f1.homephone!="";
 select f1.id,f1.addr,replace(f1.homephone,' ',""),f2.id,f2.addr,replace(f2.homephone,' ',"") from family f1,family f2 where f1.id!=f2.id and replace(f1.homephone,' ',"")=replace(f2.homephone,' ',"") and f1.homephone!="" and f1.id>f2.id;
 select * from family_person where family in ( );
 select * from person where id in ( );

Check

 select * from person where id not in (select person from family_person);
 select * from family where id not in (select family from family_person);

Samme med addr

 select f1.id,f1.addr,replace(f1.homephone,' ',),f2.id,f2.addr,replace(f2.homephone,' ',) from family f1,family f2 where f1.id!=f2.id and replace(f1.addr,' ',)=replace(f2.addr,' ',) and f1.addr!= and f1.id>f2.id;


Kopier alle events[rediger]

 insert into grp_event(grp,name,eref,t) select NN::integer as grp,name,eref,'2009-05-17 12:00' as t from grp_event 
 where grp=(select id from grp where name='team17mai_2008');

Kopier alle event status

 insert into grp_event_participant_status(ge,value,sorthint,defnext) 
  select nge.id,geps.value,geps.sorthint,geps.defnext from 
     grp_event_participant_status geps,grp_event oge,grp_event nge 
     where oge.grp=XX and oge.name=nge.name and oge.id!=nge.id and geps.ge=oge.id and nge.grp=NN;

Bytt NN med nye grp id og XX med grp id fra året før

Kopier alle event roles

 insert into grp_event_participant_role(ge,value,sorthint,defnext,ges) 
  select nge.id as ge,gepr.value,gepr.sorthint,gepr.defnext,ngeps.id as ges from 
   grp_event_participant_role gepr,grp_event oge,grp_event nge,grp_event_participant_status ogeps,
   grp_event_participant_status ngeps 
    where oge.grp=XX and 
    nge.grp=NN and 
    oge.name=nge.name and 
    ogeps.id=gepr.ges and 
    ngeps.ge=nge.id and 
    ogeps.ge=oge.id and 
    ngeps.value=ogeps.value;

Bytt NN med nye grp id og XX med grp id fra året før

Legg til alle foreldrer til teamet

 insert into grp_member(grp,person,gmtype) 
  select distinct NN,fp2.person,'aktiv' from 
   grp_member gm,family_person fp1,family_person fp2 
    where gm.grp=<alle barn> and gm.person=fp1.person and 
    fp1.family=fp2.family and fp2.fptype in ('mamma','pappa'.'stefar','stemor') and 
      fp2.person not in (select person from grp_member where grp=NN);

Forandre fra aktiv til admin på den/de som skall kunne forandre deltagre i gruppene (events)

 update grp_member set gmtype='admin' where person=<personid> and grp=NN;

Mail aliaser[rediger]

Oppdatere styret og rodeleder manuellt :


 select distinct p.email from grp_event ge, grp_event_participant gep ,person p 
   where ge.grp=11 and ge.name='Styret' and gep.ge=ge.id and p.id=gep.person;

Fixa aliases.maxb.no : styret.17mai_200x


 select fname,gname,email from grp_event_participant gep,grp_event_participant_role gepr,person p,grp_event ge 
   where gepr.value='Rodeleder' and gepr.id=gep.role and p.id=gep.person and ge.id=gep.ge and ge.grp=11;

Fixa aliases.maxb.no : rodeleder.17mai_200x


Some database commands[rediger]

Check possible double pers :

 select * from person where nosp(mob) in (select nosp(mob) from person where nosp(mob)!= nosp(' ') group by nosp(mob) having count(*)>1) order by nosp(mob);
 select fname,gname from person group by fname,gname having count(*)>1;


Merge using defined function:

select merge_person(,);

Check possible double home :

 select * from family where nosp(homephone) in (select nosp(homephone) from family where nosp(homephone)!= nosp(' ') group by nosp(homephone) having count(*)>1) order by nosp(homephone);


Check double relations

 select family,person from family_person group by family,person having count(*)>1;
 select grp,person,count(*) from grp_member group by grp,person having count(*)>1;
 select ge,person,count(*) from grp_event_participant group by ge,person having count(*)>1;


People member of many families

 select f.id as fid,fptype,gname,fname,addr,zip,town from family_person fp,person p,family f where person in ( select person from family_person group by person having count(*)>1) and p.id=person and f.id=fp.family order by person ;

Merge family:

 select merge_family()

Mob number format fix:

 update person set mob=btrim(regexp_replace(nosp(mob),'(...)(..)(..[0-9])([^0-9]*)$',' \\1 \\2 \\3 \\4'))  where  nosp(mob)=mob and mob!=nosp(' ');


Complete list:

 select p.id,p.gname,p.fname,f.homephone,p2.gname || ' ' || p2.fname,p2.mob,p2.email,p3.gname || ' ' ||p3.fname,p3.mob,p3.email from person p,grp_member gm,family_person fp1,family_person fp2,person p2,family f,family_person fp3,person p3 where gm.person=p.id and gm.grp=15 and fp1.person=p.id and fp1.family=fp2.family and fp2.fptype='mamma' and p2.id=fp2.person and f.id = fp1.family and fp3.family=f.id and fp3.person = p3.id and fp3.fptype='pappa' order by id;

People not assigned to "rode":

 select * from person p,grp_member gm where p.id=gm.person and gm.grp=NN and p.id not in (select gep.person from grp_event_participant gep,grp_event ge where gep.ge=ge.id and ge.grp=NN) and (nosp(p.fname) != nosp(' ') and nosp(p.gname) != nosp(' '));