仅使用所有匹配键查找记录

大约

我有两张桌子:

table AV, KEY AVNR //(this is the request)
table AVKW, KEY AVNR and KWCD //(these are the required qualifications for the request, N:1 to AV)

和:

table EM, KEY EMNR //(this is the employee)
table EMKW, KEY EMNR and KWCD //(these are the qualifications of the employee, N:1 to EM)

样本数据:

AV:
AVNR   (descr)
10     job december 10th
20     job december 11th
30     job december 12th

AVKW:
AVNR   KWCD
10     operator
20     driving license
20     operator

(对于10号的工作,员工必须是操作员。11号的雇员必须是操作员并具有驾驶执照。12号不需要任何资格)

EM:
EMNR    (name)
60  John
70  Pete
80  Bert

EMKW:
EMNR    KWCD
60  operator
60  driving license
70  operator

(John是持有驾驶执照的操作员; Pete是操作员,但没有执照。Bert完全没有资格)

对于John,查询应返回所有AV。对于皮特,仅12月。第十和十二;对于伯特来说,仅排在第12位。

从员工那里看,我需要知道他可以满足什么要求;因此,我需要其中所有AVKW记录都具有与当前员工匹配的AVEM记录(AV.KWCD = EM.KWCD)的AV记录。

(有一个额外的表KW,关键KWCD,列出了现有的资格,但现在已经不相关了)

我尝试了几种方法,但是似乎都没有用……找到一个匹配的资格很容易,但是emp确实需要所有要求的资格。我将如何在SQL中编写代码?

提前致谢!

粘土

我认为最直接的方法是选择具有匹配的所需资格的数量等于实际资格的数量的员工:

select * from
(
  select
    av.avnr,
    count(*) as qualificationCount
  from 
    avkw 
    inner join 
    av on
      avkw.avnr = av.avnr
  group by
    av.avnr
) as qualification  

inner join

(
  select
    em.emnr, 
    avkw.avnr,
    count(*) qualificationCount
  from
    emkw 
    inner join
    em on
      emkw.emnr = em.emnr
    inner join
    avkw on
      emkw.kwcd = avkw.kwcd
  group by
    em.emnr, 
    avkw.avnr
) as qualified

on
  qualifications.avnr = qualified.avnr
where
  qualifications.qualificationCont = qualified.qualificationCount

这应该列出与每个可用职位完全匹配的所有员工。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Linq 仅查找在标志列表中具有所有匹配值的记录?

来自分类Dev

使用联接仅显示没有匹配外键的记录

来自分类Dev

Excel - 如何查找具有匹配键的所有值?

来自分类Dev

使用 2 个外键查找不匹配的记录

来自分类Dev

使用查找获取所有记录

来自分类Dev

Rails查找所有关联ID匹配的记录

来自分类Dev

查找匹配字典中多个值的所有键

来自分类Dev

在动态字典中查找所有匹配键=值对的字典

来自分类Dev

查找isDirty的所有记录

来自分类Dev

查找isDirty的所有记录

来自分类Dev

删除所有匹配的键

来自分类Dev

如何使用Laravel通过外键检索所有记录

来自分类Dev

使用CakePHPs返回与条件数组匹配的所有记录

来自分类Dev

根据<字典>匹配X的所有字典记录的<值>存储和分组<键>

来自分类Dev

在SQL Server中仅使用一次记录查找匹配对

来自分类Dev

如何使用查找功能仅获取mongoDb联接中的第一条匹配记录?

来自分类Dev

当且仅当联接表包含所有值列表时,SQL查询才能查找记录

来自分类Dev

搜索多个值的多个列,显示仅匹配所有值的记录 MySQL

来自分类Dev

在SQLite中查找与GROUP BY结果HAVING计数> 1匹配的所有记录

来自分类Dev

在SQLite中查找与GROUP BY结果HAVING计数> 1匹配的所有记录

来自分类Dev

从第二个表中查找与所有记录匹配的 id

来自分类Dev

SQL-查找键等于值的所有“关系ID”,然后选择包含那些“关系ID”的所有记录

来自分类Dev

SQL-查找键等于值的所有“关系ID”,然后选择包含那些“关系ID”的所有记录

来自分类Dev

查找另一个工作表匹配键中的所有行

来自分类Dev

Mongo-数组查询,仅查找所有元素匹配的位置

来自分类Dev

如何使用Python查找字典中所有键的所有子级

来自分类Dev

查找所有记录或排除NULL的参数

来自分类Dev

根据某些记录查找所有父母

来自分类Dev

查找所有当前的DNS记录

Related 相关文章

  1. 1

    使用 Linq 仅查找在标志列表中具有所有匹配值的记录?

  2. 2

    使用联接仅显示没有匹配外键的记录

  3. 3

    Excel - 如何查找具有匹配键的所有值?

  4. 4

    使用 2 个外键查找不匹配的记录

  5. 5

    使用查找获取所有记录

  6. 6

    Rails查找所有关联ID匹配的记录

  7. 7

    查找匹配字典中多个值的所有键

  8. 8

    在动态字典中查找所有匹配键=值对的字典

  9. 9

    查找isDirty的所有记录

  10. 10

    查找isDirty的所有记录

  11. 11

    删除所有匹配的键

  12. 12

    如何使用Laravel通过外键检索所有记录

  13. 13

    使用CakePHPs返回与条件数组匹配的所有记录

  14. 14

    根据<字典>匹配X的所有字典记录的<值>存储和分组<键>

  15. 15

    在SQL Server中仅使用一次记录查找匹配对

  16. 16

    如何使用查找功能仅获取mongoDb联接中的第一条匹配记录?

  17. 17

    当且仅当联接表包含所有值列表时,SQL查询才能查找记录

  18. 18

    搜索多个值的多个列,显示仅匹配所有值的记录 MySQL

  19. 19

    在SQLite中查找与GROUP BY结果HAVING计数> 1匹配的所有记录

  20. 20

    在SQLite中查找与GROUP BY结果HAVING计数> 1匹配的所有记录

  21. 21

    从第二个表中查找与所有记录匹配的 id

  22. 22

    SQL-查找键等于值的所有“关系ID”,然后选择包含那些“关系ID”的所有记录

  23. 23

    SQL-查找键等于值的所有“关系ID”,然后选择包含那些“关系ID”的所有记录

  24. 24

    查找另一个工作表匹配键中的所有行

  25. 25

    Mongo-数组查询,仅查找所有元素匹配的位置

  26. 26

    如何使用Python查找字典中所有键的所有子级

  27. 27

    查找所有记录或排除NULL的参数

  28. 28

    根据某些记录查找所有父母

  29. 29

    查找所有当前的DNS记录

热门标签

归档