6表矩阵中缺少记录

fsi0uk1n  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(263)

如果您能帮助我解决下面的问题,我将不胜感激。在要求提供一些数据之后,我重申了这个问题
我有以下sql表
qual=资格代码清单(qualcode,description),例如。

HSE-01  HSE INDUCTION
HSE-02  SAFETY BRIEFING
HSE-03  FIRST AID

人工=人工代码列表(人工代码,名称)

10072   John Doe
10073   Jane Smith
10074   Mark Twain

craft=工艺代码列表(craft,desc)

MECH   Mechanic
ELEC   Electrician
PLUM   Plumber

laborcraft=附加到每个劳工代码的工艺(laborcode,craft)

10072   MECH
10073   ELEC
10074   PLUM

qualcraft=与每种工艺相关的资格(qualcode,craft)

HSE-01   MECH
HSE-02   ELEC
HSE-03   PLUM

laborqual=每个劳工id的实际资格(laborcode,qualcode)

10072   HSE-01
10073   HSE-01
10072   HSE-02
10074   HSE-02

每个资格代码可能与一个或多个工艺相关,每个劳工代码有一个工艺
从上表5中的数据可以看出,资格hse-03与梅花艇有关,hse-02与电动艇有关
然而从表6(实际资格)我们可以看出
马克吐温是一位杰出的艺术家,但不具备hse-03资格
简·史密斯是一名电气工程师,但不具备hse-02资格。
我需要确定所有的资格,应持有的每一个劳动法典,但不是。结果应该是

10073   HSE-02
    10074   HSE-03

例如,我不介意劳工法是否有其他不需要的资格

10072   HSE-02
    10073   HSE-01
    10074   HSE-02

我只想知道我们哪里缺少相关的资格证书
谢谢你的帮助

ma8fv8wu

ma8fv8wu1#

你可以加入 laborcraft 以及 qualcraft ,并使用 not exists 在表格中填写“缺失”行 laborqual :

select lc.laborcode, qc.qualcode
from laborcraft lc
inner join qualcraft qc on qc.craft = lc.craft
where not exists (
    select 1 
    from laborqual lq 
    where lq.laborcode = lc.laborcode and lq.qualcode = qc.qualcode
)

相关问题