Leeftijd nu of na overlijden
Ik heb een database, met de tabel 'personen' en die heeft 4 velden.
- id = INT / PRIMARY
- naam = VARCHAR / 255
- geboren = DATE
- overleden = DATE
Nu zijn er mensen die nog leven... dus bij die mensen word uiteraard alleen 'geboren' ingevult en bij 'overleden' dus niets. (tenminste niets, automatisch als je niets invult word het 0000-00-00)
Nu wil ik op de pagina dat hij "Naam (Leeftijd)" laat zien...
Indien de persoon nog leeft dus de huidige leeftijd, en indien de persoon overleden is de leeftijd bij overlijden. Wat voor query moet ik hiervoor gebruiken? Ik heb nog nooit zoiets hoeven gebruiken, dus heb echt geen idee hoe ik dit aanpak...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
SELECT
IF
(
overleden = '0000-00-00',
(YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
(YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
)
AS leeftijd
FROM tabelnaam
?>
SELECT
IF
(
overleden = '0000-00-00',
(YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
(YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
)
AS leeftijd
FROM tabelnaam
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Zet dan sterfdatum op NULL als default waarde.
IF overleden = NULL
dit wel:
IF IS NULL overleden
Jan Koehoorn schreef op 30.07.2009 12:17:
Uit mijn hoofd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
SELECT
IF
(
overleden = '0000-00-00',
(YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
(YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
)
AS leeftijd
FROM tabelnaam
?>
SELECT
IF
(
overleden = '0000-00-00',
(YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
(YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
)
AS leeftijd
FROM tabelnaam
?>
kan er een IF in een query :O wist ik niet :$
control flow functions van MySQL maar eens.
@ wesley: zeker! Bekijk de Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
2. dus ook lastig te onthouden
3. het is een performancer killer (control flow functions). Wanneer jij een site hebt waar gemiddeld 10 mensen per maand komen, ok swa, geen probleem. Het is alleen een slechte manier om je aan te leren wanneer je hoger op wilt komen met programmeren.
Kortom haal die IF bla die bla eruit en codeer gewoon goed. Commentaar + goeie code (kort, doeltreffend, veilig en snel)
Gewijzigd op 01/01/1970 01:00:00 door Kalle P