I have this table:

```
person table
| id | name    |
|  1 | person1 |
|  2 | person2 |

person_grade table

| id | person_id | grade  | grade_date |
|  1 |     1     | grade1 | 2010-01-01 |
|  2 |     1     | grade2 | 2012-01-01 |
|  3 |     2     | grade3 | 2010-05-05 |
|  4 |     2     | grade4 | 2012-03-03 |

```

I want to know person grade at a specific time, say 2012-02-02. How to achieve this?

The closest I got was, with this query:

```
SELECT t1.id, t1.name, 
(SELECT grade FROM (
(SELECT s1.grade, s1.grade_date FROM person_grade AS s1 
WHERE s1.grade_date >= '2012-02-01'  AND s1.person_id = t1.id
ORDER BY s1.grade_date LIMIT 1)
UNION ALL
(SELECT s1.grade, s1.grade_date FROM person_grade AS s1 
WHERE s1.grade_date <= '2012-02-01'  AND s1.person_id = t1.id
ORDER BY s1.grade_date DESC LIMIT 1)
) AS ss ORDER BY grade_date LIMIT 1) AS grade_person
FROM person AS t1

```

But at MySQL that give me an error 

> 
> "Unknown column 't1.id' in 'where clause'".
> 
> 
> 

Please advise.  

TIA