我在我的表结构中遇到问题并在结果中查询我想要的是它只输出一个结果,这是第一个结果。我应该对表格结构做出哪些改变?因为它只返回相同的输出但不同的prf_id。
情况就是这样。 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 :(得分: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
答案 1 :(得分: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的行。