MySQL группа по ошибке, не может видеть его - PullRequest
0 голосов
/ 02 ноября 2011

У меня запрос, и у меня возвращается следующая ошибка, но я не могу найти проблему,

У вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'HAVING DATE_FORMAT (NOW (),'% Y ') - DATE_FORMAT (candidates. DOB,'% Y ') - (DATE_'). в строке 14

это мой запрос,

SELECT `candidates`.`candidate_id`, 
       `candidates`.`first_name`, 
       `candidates`.`surname`, 
       `candidates`.`DOB`, 
       `candidates`.`gender`, 
       `candidates`.`talent`, 
       `candidates`.`location`, 
       `candidates`.`availability`, 
       DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) 
                   as `age`, 
       `candidate_assets`.`url`, 
       `candidate_assets`.`asset_size` 
FROM `candidates` 
LEFT JOIN `candidate_assets` ON `candidate_assets`.`candidates_candidate_id` = `candidates`.`candidate_id` 
WHERE `candidates`.`availability` = 'yes' 
AND candidates.talent = "presenter" 
AND candidates.gender = "male" 
HAVING DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <= 39
AND HAVING DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <=29 
GROUP BY `candidates`.`candidate_id`

в чем проблема, я не заядлый пользователь mySQL

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Три вещи, которые я вижу сразу:

1 - HAVING должно встречаться в запросе только один раз, а не дважды.
2 - HAVING всегда должно идти после GROUP BY
3 - HAVING применяется только к АГРЕГАТИЧЕСКИМ ФУНКЦИЯМ , а не к чему-то вроде сравнения дат. Если вы хотите сравнить дату, вы должны использовать предложение WHERE.

Может быть и больше, но ваш запрос чрезвычайно сложно прочитать в текущем «формате». Если вам нужна дополнительная помощь, приложите хотя бы НЕКОТОРЫЕ усилия, чтобы сделать ваш вопрос читабельным.

0 голосов
/ 02 ноября 2011

Проверьте свои меньше чем < как до from в столбце age, так и в having.У тебя больше, чем должно быть.Неверный синтаксис.

0 голосов
/ 02 ноября 2011

Вам нужно использовать ключевое слово HAVING только один раз.Убери второго после AND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...