Leeftijd nu of na overlijden
Goedendag,
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...
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...
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
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Zet dan sterfdatum op NULL als default waarde.
Als je met NULL gaat werken, moet je wel in de gaten houden dat je in MySQL met IS NULL (of IS NOT NULL) checkt. Dit zal dan dus niet werken:
IF overleden = NULL
dit wel:
IF IS NULL overleden
IF overleden = NULL
dit wel:
IF IS NULL overleden
'Jan:
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 :$
@ wesley: zeker! Bekijk de control flow functions van MySQL maar eens.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
1. het is niet te lezen (als je dit later moet lezen word je hier niet blij van dat je dit ooit zo hebt gemaakt)
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)
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




