RE: [PHP-DB] Next birthday?

2002-03-08 Thread Kristjan Kanarik

On Fri, 8 Mar 2002, Robert V. Zwink wrote:

> The simple answer might be:
>
> SELECT member.*
>  FROM `member`
> WHERE DAYOFYEAR(member_dob) >= DAYOFYEAR(CURDATE())
> ORDER BY member_dob DESC LIMIT 1
>
> Seems to work for me.

Not for me. I think it should be ordered like this:
ORDER BY DAYOFYEAR(member_dob) ASC

Otherwise it will display the person who was born on 25th of March 1988
instead of the one born 11th of March 1980. Pls. correct me if I am wrong.

Thanks & Cheers,
Kristjan

P.S. Pls. CC to [EMAIL PROTECTED] - I am only on the digest.






> The problem is that it wouldn't support members that
> have a birthday on the same day :)  To solve that I would select the next
> birthday from the 'member' table, then go back and select all the members
> that have that birthday.  It also would not support selecting January
> birthdays in December (which might be a problem Dec 31).
>
> so you would actually need three queries:
> SELECT member_dob
>  FROM `member`
> WHERE DAYOFYEAR(member_dob) >= DAYOFYEAR(CURDATE())
> ORDER BY member_dob DESC LIMIT 1
>
> if that returns 0 results, then you would likely be in December trying to
> show the next birthday in January.  Go back to the database starting with
> January 1 and select brithdays starting at the begining of the year.
>
> SELECT member_dob
>  FROM `member`
> WHERE DAYOFYEAR(member_dob) >= 0
> ORDER BY member_dob DESC LIMIT 1
>
> then take that result and:
>
> SELECT member.*
>  FROM `member`
> WHERE member_dob = '$result_from_previous_query'
> ORDER BY last_name
>
> This really seems like overkill.  This query would be much simpler if you
> just showed everyone's birthday next month (or something like that).
>
> Robert Zwink
> http://www.zwink.net/daid.php
>
> -Original Message-
> From: Kristjan Kanarik [mailto:[EMAIL PROTECTED]]
> Sent: Friday, March 08, 2002 5:30 AM
> To: [EMAIL PROTECTED]
> Subject: [PHP-DB] Next birthday?
>
>
> I have a table called 'members' with a field (among many others)
> 'member_dob' - the birthday of a particular member. The data type of this
> field is date (-mm-dd).
>
> What I'd like to do now is to fetch one particular row from the database
> (I am using MySQL 3.23.37) - namely the row of the member who is the next
> one to have a birthday. Can this be done only with a advanced query or
> should I fetch all rows and use PHP to find out who is the next one to
> have a birthday? I'd prefer letting MySQL to do the job...
>
> Any ideas?
>
> TIA,
> Kristjan
>
> P.S. Pls. CC to [EMAIL PROTECTED] as well - I am only on the digest.
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP-DB] Next birthday?

2002-03-08 Thread Robert V. Zwink

The simple answer might be:

SELECT member.*
 FROM `member`
WHERE DAYOFYEAR(member_dob) >= DAYOFYEAR(CURDATE())
ORDER BY member_dob DESC LIMIT 1

Seems to work for me.  The problem is that it wouldn't support members that
have a birthday on the same day :)  To solve that I would select the next
birthday from the 'member' table, then go back and select all the members
that have that birthday.  It also would not support selecting January
birthdays in December (which might be a problem Dec 31).

so you would actually need three queries:
SELECT member_dob
 FROM `member`
WHERE DAYOFYEAR(member_dob) >= DAYOFYEAR(CURDATE())
ORDER BY member_dob DESC LIMIT 1

if that returns 0 results, then you would likely be in December trying to
show the next birthday in January.  Go back to the database starting with
January 1 and select brithdays starting at the begining of the year.

SELECT member_dob
 FROM `member`
WHERE DAYOFYEAR(member_dob) >= 0
ORDER BY member_dob DESC LIMIT 1

then take that result and:

SELECT member.*
 FROM `member`
WHERE member_dob = '$result_from_previous_query'
ORDER BY last_name

This really seems like overkill.  This query would be much simpler if you
just showed everyone's birthday next month (or something like that).

Robert Zwink
http://www.zwink.net/daid.php

-Original Message-
From: Kristjan Kanarik [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 5:30 AM
To: [EMAIL PROTECTED]
Subject: [PHP-DB] Next birthday?


I have a table called 'members' with a field (among many others)
'member_dob' - the birthday of a particular member. The data type of this
field is date (-mm-dd).

What I'd like to do now is to fetch one particular row from the database
(I am using MySQL 3.23.37) - namely the row of the member who is the next
one to have a birthday. Can this be done only with a advanced query or
should I fetch all rows and use PHP to find out who is the next one to
have a birthday? I'd prefer letting MySQL to do the job...

Any ideas?

TIA,
Kristjan

P.S. Pls. CC to [EMAIL PROTECTED] as well - I am only on the digest.


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php