2015-11-06 45 views
0

我在我的表結構和查詢結果中遇到問題,我想要的是,它只會輸出一個結果,這是第一個結果。我應該做什麼改變我的桌子結構?因爲它只返回相同的輸出但不同的prf_id。SQL查詢LEFT JOIN導致兩個輸出,但應該只有一個

所以這裏是情況。 tbl_prf是針對人員的要求。 tbl_job_plist用於發佈的工作,tbl_applicant用於申請人。當我在tbl_prf中添加一個條目時,它會從其參考示例的tbl_job_plist中選擇條目。然後,當我試圖查看申請人時,需要顯示選定的tbl_job_plist的tbl_prf ID和ID。所以我就是這樣編寫代碼的。當我查看申請人時會發生什麼?它會選擇導致兩個輸出與同一個申請人的兩個tbl_prf條目。

我想要做的是獲得ap_status爲1的申請人。正如你所看到的,我只有一個申請人,所以我只期待一個結果。如果prf_job_post_ref和jplist_id相等,應用程序名稱會持續顯示結果。我如何防止它? tbl_prf

prf_id  | prf_job_post_ref |   
------------------------------------  
1   |  1   | 
3   |  1   | 

tbl_job_plist

jplist_id | jplist_position  | 
------------------------------------ 
1   |  Crew   | 

tbl_applicant

ap_id  | ap_position_applied | ap_status | ap_name | 
---------------------------------------------------------- 
1   |  1   |  1  | Kurt | 

QUERY

SELECT 
    tbl_applicant.ap_id, 
    tbl_applicant.ap_name, 
    tbl_job_plist.jplist_id, 
    tbl_prf.prf_id 
    FROM tbl_applicant 
    LEFT JOIN tbl_job_plist ON tbl_applicant.ap_position_applied = tbl_job_plist.jplist_id 
    LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref 
    WHERE ap_status = 1 

結果

ap_id  | jplist_id   | prf_id  | ap_name | 
----------------------------------------------------------- 
1   |  1   |  1  | Kurt | 
1   |  1   |  3  | Kurt | 
+0

你的問題不清楚。 SQL是正確的,你會得到2行,沒有錯。你的數據意味着什麼?你想讓它告訴你什麼? – Elliveny

+0

我想要的只是一個結果會出現,二者之一。我知道我的查詢是錯誤的,如果我想實現這一結果。那麼你會建議我需要做些什麼來糾正它? – user3235016

+0

限制行數可以使用rowcount = 1。但是我還不清楚你想達到什麼目的。如果你啃桌子可能會給你重複嘗試刪除重複之前,你把加入。 – Avi

回答

0

根據您想只有一個行,不關心它,你可以使用TOP,像這樣的評論...

SELECT TOP 1 
    tbl_applicant.ap_id, 
    tbl_job_plist.jplist_id, 
    tbl_prf.prf_id 
    FROM tbl_applicant 
    LEFT JOIN tbl_job_plist ON tbl_applicant.ap_position_applied = tbl_job_plist.jplist_id 
    LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref 
    WHERE ap_status = 1 
+0

請檢查我已完成的編輯。謝謝 – user3235016

0

根據您想要返回這兩個絲束,你會要麼使用MAX或MIN子查詢。所以經過

LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref

你可以把

and tbl_prf.prf_id =(select max(pe.prf_id) from tbl_prf pe where pe.prf_job_post_ref= tbl_prf.prf_job_post_ref) 

這與3在你的例子返回的值的行。