我目前正在尝试SELECT
使用 3 个表编写语句JOIN
。但我似乎无法让 select 语句从 3 个表中输出我想要的值
这是构成我的表格的示例:
申请表
APPNUM APPNAME
A0001 Derrick Tan
A0002 Eugene Loh
A0003 Samuel Lim
A0004 Ann Chan A0005
Jourdan Wee A0006
Linda Koh
A0007 Veronica Lim
A0008 Junaida Bte Ismail
A0009 Gene Tan
A0010 Rupesh Subramaniam
A0011 Muhammad Farid技能桌
SKILLPOSAP SKILLPOSSKILL
A0001 SK001
A0001 SK003
A0001 SK005
A0001 SK006
A0001 SK201
A0001 SK301
A0002 SK107
A0002 SK108
A0002 SK202技能表
SKILLNEEDE SKILLNEEDEDSKILL
P0001 SK001
P0001 SK005
P0001 SK006
P0001 SK201
P0001 SK301
如您所见,我需要根据 Skillneeded 的 Skillneededposnum 值从申请人那里检索值 appnum 和 appname。所以链接是从 Skillneeded 到 Skillpossessed 到申请人。使用JOIN
,我可以检索 appnum n appnames 但它们是重复值!
这是选择语句:
SELECT APPNUM,APPNAME
FROM APPLICANT A
LEFT JOIN SKILLPOSSESSED B
ON A.APPNUM = B.SKILLPOSAPPNUM
LEFT JOIN SKILLNEEDED C
ON B.SKILLPOSSKILL = C.SKILLNEEDEDSKILL
WHERE C.SKILLNEEDEDPOSNUM = 'P0001';
这是一个结果示例:
APPNUM APPNAME
A0001 Derrick Tan
A0001 Derrick Tan
A0001 Derrick Tan
A0001 Derrick Tan
A0001 Derrick Tan
A0003 Samuel Lim
A0003 Samuel Lim
A0003 Samuel Lim
A0004 Ann Chan
A0004 Ann Chan A0005
Jourdan Wee
显示的结果只能是 的单行A0001 Derrick Tan
。
编辑:这个过程是从技能需要到技能处理再到申请人。'P0001' 将从 Skillneeded 表中获取 5 个 'SK---' 数据。从那里 5 'SK---' 数据将从 Skillprocessed 表中检索 'A0001'。最后,“A0001”将从申请表中检索名称。
我应该如何修改我现有的 sql 语句来实现这一点?或者有没有比使用更好的方法来做到这一点JOIN
?
感谢所有的帮助!