我在SQLite3中有三个表:
证书
cert_id
caption
人员
staff_id
name
cc_id
rel__staff_certificate
relation_id
staff_id
cert_id
ccdata
cc_id
cc_name
我应该如何创建一个SQL来查看员工与员工之间是否存在关系?
答案 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;