首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询两个导致重复的连接

SQL查询两个导致重复的连接
EN

Stack Overflow用户
提问于 2015-11-11 10:51:29
回答 2查看 39关注 0票数 0

*我将只提供必要的数据,而不是所有数据,以避免混淆结构

tbl_job_plist

-jplist_id (主键) -jplist_position

tbl_prf

-prf_id (主键) -prf_job_post_ref

tbl_applicant

-ap_id (PK) -ap_position_applied -ap_status

样本数据

tbl_prf

代码语言:javascript
复制
prf_id       | prf_job_post_ref |           
---------------------------------
1            |        1         |
3            |        1         |

tbl_job_plist

代码语言:javascript
复制
jplist_id    | jplist_position     |
------------------------------------
1            |        Crew         |

tbl_applicant

代码语言:javascript
复制
ap_id        | ap_position_applied | ap_status | ap_name   |
------------------------------------------------------------
1            |        1            |     1     |   Robert  |

下面是该项目的流程。首先,您需要创建一个职位发布(Tbl_job_plist)。然后,在创建人员请求(Tbl_prf)之后,您将需要指示Job Posting Reference,因此这将是prf_job_post_ref的值。其他人员请求可以指示相同的职务发布。然后,申请者将从显示的职务公告列表中选择ap_position_applied的值,并获得ap_status 1作为默认值。

因此,如果我要执行一个查询,该查询将查看所有ap_status为1的申请者,那么我的查询就是

代码语言:javascript
复制
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 

我得到的结果是:

代码语言:javascript
复制
ap_id        | jplist_id           | prf_id     | ap_name |
-----------------------------------------------------------
1            |        1            |     1      |   Kurt  |
1            |        1            |     3      |   Kurt  | 

但我只想返回不会重复的结果。

我知道是因为

代码语言:javascript
复制
LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref

我得到了这个结果。因此,我在根据我提供的流程编辑我的结构时,征求您的建议。谢谢你们

EN

回答 2

Stack Overflow用户

发布于 2015-11-11 11:04:44

如果不想显示重复的数据,可以尝试GROUP BY。

代码语言:javascript
复制
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 
GROUP BY tbl_applicant.ap_id,tbl_applicant.ap_name, tbl_job_plist.jplist_id,tbl_prf.prf_id 

您可以尝试使用DISTINCT

代码语言:javascript
复制
SELECT DISTINCT
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
票数 0
EN

Stack Overflow用户

发布于 2015-11-11 11:08:08

当您将其更改为右连接时会发生什么?

代码语言:javascript
复制
LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33643489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档