2011-12-08 71 views
1

我在添加條件字段到我的查詢時遇到問題。 該查詢返回在我的網站上發佈的作業(很多連接,沒什麼特別的)。問題是我需要添加另一個字段,以便知道當前用戶是否已申請此作業(以刪除APPLY按鈕)...加入查詢中的MySQL條件字段

我有一個jobApplication表,其中包含user_id和job_id表。我想過使用另一個連接,但無法工作。我試圖用IF創建和選擇,但也不太設法使其工作:/ ...

這是我的查詢:

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" 

我所做的任何嘗試添加條件選擇打破了查詢,有人可以給我一個更好的方向嗎?

謝謝!

+0

我只需要當然的原則,我會嘗試重現它在我的數據庫表:) – Yanipan

+1

我已經重新格式化您的查詢,使其更易於閱讀。但是,它在上次加入中缺少ON條件。 –

+0

ahhh @ a'r你打敗了我,我正要拯救(:無論如何,我已經添加了sql標籤以及 – ComputerSaysNo

回答

2

很難肯定地說不知道更多關於您的模式,但是您在左連接的正確軌道上。您需要使用當前用戶的申請人ID和jobs表中的工作ID將他們留在申請人表中。

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" 
+0

ahhhh我不知道我可以給一個ON添加一個變量,我只是爲了匹配列...非常感謝它像夢一樣:) – Yanipan