基本上我想执行这两个查询并执行交叉操作:
(SELECT DISTINCT C.hospital_id FROM hospital.consulta C
INNER JOIN hospital.enfermaria E WHERE C.consulta_id = 2)
-- INTERSECT
(SELECT DISTINCT E.hospital_id FROM hospital.enfermaria_atendimento EA
INNER JOIN hospital.enfermaria E WHERE E.enfermaria_id = 1);
然而,似乎MySQL(INTERSECT)中没有这样的东西。这是为了让我在我的表hospital.enfermaria_atendimento中创建一个TRIGGER BEFORE INSERT,以确保每个元组都是一致的。
enfermaria_atendimento表包含consulta_id和enfermaria_id属性。这两个属性都是不同表(表consulta和table enfermaria)的外键,这两个表(两者)都与表医院有关系。 enfermaria_atendimento的新元组不能包含与属于不同hospital_id的enfermaria_id相关的consulta_id。
我硬编码了特定的enfermaria_id = 1和hospital_id = 2仅用于模拟目的。而不是具体的数字我打算使用新的信息。插入
我尝试使用以下方法模拟INTERSECT参数:
SELECT DISTINCT E.hospital_id FROM hospital.enfermaria_atendimento EA
INNER JOIN hospital.enfermaria E WHERE E.enfermaria_id = 1
WHERE E.hospital_id
IN (
SELECT C.hospital_id FROM hospital.consulta C
INNER JOIN hospital.enfermaria_atendimento EA ON C.consulta_id=2
);
但到目前为止没有成功......
答案 0 :(得分:1)
我相信您案例中的INTERSECT
可以像下面一样进行模拟(使用额外的联接):
SELECT DISTINCT E.hospital_id
FROM hospital.enfermaria_atendimento EA
INNER JOIN hospital.enfermaria E ON
?? = ?? -- put conditions here
INNER JOIN (
SELECT DISTINCT C.hospital_id
FROM hospital.consulta C
INNER JOIN hospital.enfermaria_atendimento EA ON
?? = ?? -- put conditions here
WHERE C.consulta_id = 2
) F ON E.hospital_id = F.hospital_id
WHERE
E.enfemaria_id = 1
您必须指定加入条件,查询中缺少这些条件。