我有3张桌子
CREATE TABLE airships(
idas number PRIMARY KEY,
nameas varchar2(20),
range number
);
CREATE TABLE Certificate(
idem number NOT NULL,
idas number NOT NULL,
FOREIGN KEY (idem) REFERENCES employees(idem),
FOREIGN KEY (idas) REFERENCES airships(idas)
);
CREATE TABLE employees(
idem number PRIMARY KEY,
nameem varchar2(20),
paycheck number
);
我必须找到一批经过相同飞艇认证的员工,范围超过3000。
我知道我必须使用JOIN,但我不知道如何从同一个表中找到对。
答案 0 :(得分:0)
SELECT e1.nameem, e2.nameem, a.nameas
FROM employees e1
JOIN Certificates c1 ON e1.idem = c1.idem
JOIN Certificates c2 ON c1.idas = c2.idas AND c1.idem < c2.idem
JOIN employees e2 ON e2.idem = c2.idem
JOIN airships a ON a.idas = c1.idas
WHERE a.range > 3000
c1.idem < c2.idem
测试使其不会将员工作为一对自己报告,并且也避免两次显示相同的一对(以相反的顺序)。