Grupér efter alder.

Tags:    php mysql

Hej Udviklere.

Jeg har efterhånden siddet mange lange timer og prøvet at kringle dette problem men uden held.

Det mine koder gerne skulle kunne er følgende:
1. Hente fødselsdato fra MySQL hvis brugeren har stemt.
2. Beregne fra fødselsdato til konkret alder.
3. Gruppere brugerene i forskellige aldersgrupper.

Det er nummer tre jeg ikke kan kringle, og jeg håber I kan komme med nogle bud, da jeg føler jeg er på bar bund. Jeg beder ikke nødvendigvis om kode eksempler, men rettere om noget teori der kan hjælpe mig til selv at forstå det.

Her er nogle af mine funktioner:

public function getUserData($projectID)
Fold kodeboks ind/udPHP kode 


private function DateToAge($date)
Fold kodeboks ind/udPHP kode 


public function getAgeFromUsers()
Fold kodeboks ind/udPHP kode 


public function defineAgeGroups()
Fold kodeboks ind/udPHP kode 


Håber der er en der kan hjælpe!

Mvh. Andreas Voss



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 13 karma
Sorter efter stemmer Sorter efter dato
I ms-sql ville jeg bruge UNION og mon ikke der findes noget lignende i mysql? UNION binder flere selects sammen og returnerer egentlig kun ét datasæt.

Så kan du lave en
select * from xxx where (alder <= 20) as aldersgruppe (fanger alle fra 0 til 20)
union
select * from xxx where (alder > 20 and alder <= 40) as aldersgruppe (fanger alle fra 21 til 40)
union
select * from xxx where (alder > 40 and alder <=60) as aldersgruppe (fanger alle fra 41 til 60)
union
select * from xxx where (alder > 60) as aldersgruppe (fanger alle over 60

group by aldersgruppe

Ovenstående idé (det skal jo lige kodes :-) )bør virke hvis det ikke er aldersgrupper der stiger med samme intervaller.

Hvis det er samme interval 15-19, 20-24, 25-29, osv. osv. kan du f.eks. lave en

Fold kodeboks ind/udSQL kode 




Hmm, prøver du ikke at hente noget fra databasen der matcher følgende:

Fold kodeboks ind/udSQL kode 


Tallet 25 kunne være hvad som helst, min pointe er at du kalder en funktion der returnerer en alder, eks. 25, og så prøver du at finde alle resultater i rækken 25 der er under eller lig 20.

Du skal ud i noget alá
Fold kodeboks ind/udSQL kode 


Og så må du regne alderen ud bagefter.



Indlæg senest redigeret d. 23.12.2011 22:19 af Bruger #7688
Jeg har kigget på dit svar og det ser brugbart ud, dog har jeg fået et nyt problem i samme kategori!
I min database er der ingen aldre, men derimod fødselsdatoer så PHP automatisk kan beregne alderen på en given bruger, jeg har prøvet at kalde min DateToAge() funktion fra tidligere indlæg men det ser ikke ud til at virke.

Fold kodeboks ind/udPHP kode 


Denne funktion returnerer ingenting, og jeg er 99% sikker på at det er pga. mit funktions kald i querien.

Jeg håber nogen kan guide mig videre.

Mvh. Andreas Voss



Jeg fandt på noget andet der virkede simplere, om ikke andet så syntes jeg det var nemmere at sætte op her er min løsning:

private function getAge()
Fold kodeboks ind/udPHP kode 


private function getVotingUsers()
Fold kodeboks ind/udPHP kode 


public function ageGroups()
Fold kodeboks ind/udPHP kode 


Men tusinde tak for hjælpen! ;)

Mvh. Andreas Voss



t