を実行する必要性を基本的に私は、これらの2つのクエリを実行し、交差操作を実行します:MySQLの(INTERSECT)にはそのようなことがないようINTERSECT機能
(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);
はしかし、そうです。これは私のテーブルhospital.enfermaria_atendimentoにすべてのタプルが一貫していることを保証するためにTRIGGER BEFORE INSERTを作成できるようにするためです。
enfermaria_atendimento表には、consulta_idおよびenfermaria_id属性が含まれています。両方の属性は、(両方とも)テーブル病院との関係を持つ異なるテーブルへの外部キー(テーブルコンサルタとテーブルエンフォルマリア)です。 enfermaria_atendimentoの新しいタプルには、異なるhospital_idに属するenfermaria_idに関連するconsulta_idを含めることはできません。
シミュレーション目的のために、特定のenfermaria_id = 1とhospital_id = 2をハードコードしました。特定の番号の代わりに、私は新しいものから情報を使うつもりです。
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
);
しかし、これまでのところ...
あなたの 'JOIN'節には' ON'条件がありません。これは、クエリが実行に多くの時間を要し、重複を削除するために 'DISTINCT'が必要な理由です(正しい条件が使用されている場合は表示されません)。 – axiac