Условное поле MySQL в запросе соединения - PullRequest
1 голос
/ 08 декабря 2011

У меня проблемы с добавлением условного поля в мой запрос.Запрос возвращает вакансии, которые опубликованы на моем веб-сайте (много объединений, ничего особенного).Дело в том, что мне нужно добавить еще одно поле, чтобы узнать, если текущий пользователь уже подал заявку на эту работу (чтобы удалить кнопку APPLY) ...

У меня есть таблица jobApplication, в которой есть user_idи таблицы job_id.Я думал об использовании другого соединения, но это не сработало.Я пытался создать его с помощью IF и SELECT, но мне не удалось заставить его работать: /...

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

SELECT *, j.job_id as jid, c.name as city_name 
FROM jobs j 
    JOIN areas a ON a.area_id = j.job_area
    JOIN positions p ON p.position_id = j.job_position
    JOIN fields f ON f.id = j.job_field
    JOIN cities c ON j.job_city = c.id 
    JOIN jobTypes jt ON j.job_type = jt.job_id
    JOIN companies comp ON j.job_company = comp.company_id 
    LEFT JOIN jobApplications ja ON <missing>
WHERE j.job_field = '$field' AND j.job_position = '$position' 
  AND j.job_area = '$area' 
ORDER BY j.creationDate DESC"

любая попытка, которую я предпринялдобавить условие select сломал запрос, есть ли шанс, что кто-то может дать мне лучшее направление?

Спасибо !!

1 Ответ

2 голосов
/ 08 декабря 2011

Трудно сказать наверняка, не зная больше о вашей схеме, но вы находитесь на правильном пути с левым соединением.Вам нужно будет присоединиться к таблице кандидатов с помощью идентификатора кандидата для текущего пользователя и идентификатора задания из таблицы заданий.

SELECT 
*,
j.job_id as jid, 
c.name as city_name 
FROM jobs j 
JOIN areas a ON a.area_id = j.job_area
JOIN positions p ON p.position_id = j.job_position 
JOIN fields f ON f.id = j.job_field
JOIN cities c ON j.job_city = c.id 
JOIN jobTypes jt ON j.job_type = jt.job_id
JOIN companies comp ON j.job_company = comp.company_id 
LEFT JOIN jobApplications ja ON ja.applicantId = '$applicantId' and ja.jobId = j.jobId
WHERE 
 j.job_field = '$field' 
AND j.job_position = '$position' 
AND j.job_area = '$area' 
ORDER BY j.creationDate DESC"
...