mysql join возвращает только один результат от join - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть следующий запрос,

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'";

В данный момент запрос возвращает несколько строк из объединенной таблицы, возможно ли вернуть только один результат за объединение?

1 Ответ

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

Это возможно.Попробуйте использовать функцию GROUP_CONCAT , например -

SELECT
  c.`candidate_id`, 
  c.`first_name`, 
  c.`surname`, 
  c.`DOB`, 
  c.`gender`, 
  c.`talent`, 
  c.`location`, 
  c.`availability`,
  DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(c.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(c.`DOB`, '00-%m-%d')) as `age`,
  GROUP_CONCAT(ca.`url`) `url`,
  GROUP_CONCAT(ca.`asset_size`) `asset_size`
FROM `candidates` c
LEFT JOIN `candidate_assets` ca ON ca.`candidates_candidate_id` = c.`candidate_id`
WHERE c.`availability` = 'yes'
GROUP BY c.candidate_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...