Hoi,
Ik gebruik onderstaand stukje code om verjaardagen te kunnen uitvragen uit een leden database. Dit scriptje werkt prima, maar toen ik zojuist zag dat het een lege output teruggaf omdat er de komende dagen niemand jarig is, realiseerde ik me dat het veel netter zou zijn om weer te geven op welke volgende drie dagen (die dus niet per se op een volgend zijn) er iemand jarig is, in plaats van de verjaardagen voor vandaag, morgen en overmorgen weet te geven zoals nu het geval is.
In eerste instantie lijkt mij dit iets wat je kan doen doormiddel van een GROUP BY op sort_date icm een LIMIT 3 oid, echter het probleem is dan dat er slechts een jarige per dag weergegeven wordt. Ik zou natuurlijk mbv een stukje programeren een loopje kunnen maken, maar netter is het om alles in een query te houden.
Hoe kan ik mijn query zodanig aanpassen dat ik dit kan doen, of loop ik hier gewoon weer tegen een tekortkoming van MySQL aan mbt subqueries ed?
Ik gebruik onderstaand stukje code om verjaardagen te kunnen uitvragen uit een leden database. Dit scriptje werkt prima, maar toen ik zojuist zag dat het een lege output teruggaf omdat er de komende dagen niemand jarig is, realiseerde ik me dat het veel netter zou zijn om weer te geven op welke volgende drie dagen (die dus niet per se op een volgend zijn) er iemand jarig is, in plaats van de verjaardagen voor vandaag, morgen en overmorgen weet te geven zoals nu het geval is.
In eerste instantie lijkt mij dit iets wat je kan doen doormiddel van een GROUP BY op sort_date icm een LIMIT 3 oid, echter het probleem is dan dat er slechts een jarige per dag weergegeven wordt. Ik zou natuurlijk mbv een stukje programeren een loopje kunnen maken, maar netter is het om alles in een query te houden.
Hoe kan ik mijn query zodanig aanpassen dat ik dit kan doen, of loop ik hier gewoon weer tegen een tekortkoming van MySQL aan mbt subqueries ed?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| SELECT
leden.leden_id,
CONCAT_WS(' ', leden.voornaam, leden.tussen, leden.achternaam) AS naam,
DATE_FORMAT(leden.geboortedatum, '%d.%m') AS date,
DATE_ADD(
leden.geboortedatum,
INTERVAL (
// bereken hoe oud lid op volgende verjaardag is..
YEAR(CURRENT_DATE())
- YEAR(leden.geboortedatum)
- (RIGHT(CURRENT_DATE(), 5) <= RIGHT(leden.geboortedatum, 5))
+ 1
) YEAR
// .. en tel dit op bij geboortedatum om te kunnen sorteren
) AS sort_date
FROM
leden
WHERE
leden.lid = 'ja'
HAVING
// verjaardagen voor vandaag, morgen en overmorgen
sort_date
BETWEEN
CURRENT_DATE()
AND
DATE_ADD(
CURRENT_DATE(),
INTERVAL 2 DAY
)
ORDER BY
sort_date ASC,
naam ASC; |
Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder