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...
Uit mijn hoofd:

<?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
?>
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
Jan Koehoorn schreef op 30.07.2009 12:17
Uit mijn hoofd:

<?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
?>



kan er een IF in een query :O wist ik niet :$
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)

Reageren