如何查看员工是否有证书? (SQL)

时间:2014-10-21 14:13:08

标签: sql

我在SQLite3中有三个表:

证书

cert_id
caption

人员

staff_id
name
cc_id

rel__staff_certificate

relation_id
staff_id
cert_id

ccdata

cc_id 
cc_name

我应该如何创建一个SQL来查看员工与员工之间是否存在关系?

2 个答案:

答案 0 :(得分:0)

这取决于您所寻找的内容 - 具有特定证书的员工列表,具有任何证书的员工列表,或每个员工的列表以及他们拥有的每个证书。

SELECT name, certificate FROM staff 

INNER JOIN 

rel__staff_certificate ON staff.staff_id = rel__staff_certificate.staff_id 

INNER JOIN 

certificates ON rel__staff_certificate.cert_id = certificates.cert_id 

这将显示每个员工和证书组合的列表。我建议您查看JOIN关键字并对自己进行一些研究。我发现SQLZoo是一个很好的学习资源。

答案 1 :(得分:0)

所以我终于通过IRC的一些帮助找到了它并阅读了JOIN:

SELECT ccdata.cc_name, ccdata.cc_code, rel__staff_certificate.cert_id, rel__staff_certificate.cert_date, staff.cc_id, COUNT(*) AS staffcount_certified FROM staff JOIN rel__staff_certificate ON staff.staff_id = rel__staff_certificate.staff_id JOIN ccdata ON staff.cc_id = ccdata.cc_id WHERE staff.date_invalid = '' AND rel__staff_certificate.cert_date BETWEEN '2010-01-01' AND '2014-01-01' GROUP BY ccdata.cc_name, rel__staff_certificate.cert_id, staff.cc_id, ccdata.cc_id;