mysql> describe jobs;
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| job_id | int(11) | NO | PRI | NULL | auto_increment |
| candidate_id | int(11) | NO | MUL | NULL | |
| company_id | int(11) | NO | MUL | NULL | |
| start_date | date | NO | MUL | NULL | |
| end_date | date | NO | MUL | NULL | |
+--------------+---------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
Каждый кандидат может иметь несколько заданий. Я хочу найти последнюю работу для каждого кандидата (на основе даты начала, потому что датой окончания может быть 0000-00-00), и проверить (в PHP), если end_Date не является 0000-00-00.
(если ваша последняя дата окончания не 0000-00-00, значит, вы сейчас безработный, и это то, что я ищу; я не знаю, как это сделать в моем запросе, поэтому сделаю это в PHP).
Запрос SELECT candidate_id, end_Date FROM jobs ORDER BY candidate_id , start_date DESC
ставит меня на полпути.
+--------------+------------+
| candidate_id | end_Date |
+--------------+------------+
| 1 | 2019-08-31 |
| 1 | 2019-01-31 |
| 1 | 2019-05-31 |
| 2 | 0000-00-00 |
| 2 | 2018-02-28 |
| 2 | 2017-05-31 |
| 2 | 2016-09-30 |
| 3 | 0000-00-00 |
| 3 | 2019-05-31 |
| 4 | 2019-04-30 |
| 4 | 2019-09-30 |
(Как) я могу получить только первую запись (строку с самой последней start_date
) для Идентификатор каждого кандидата? И можно ли получить только те, в которых дата окончания не зарегистрирована в 0000-00-00?
(Ой, похоже, мой порядок по end_date не работает)