2016-11-22 9 views
1

を実行する必要性を基本的に私は、これらの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 
    ); 

しかし、これまでのところ...

+0

あなたの 'JOIN'節には' ON'条件がありません。これは、クエリが実行に多くの時間を要し、重複を削除するために 'DISTINCT'が必要な理由です(正しい条件が使用されている場合は表示されません)。 – axiac

答えて

1

なしの成功、私はあなたのケースでINTERSECTが参加し、追加を使用して(下記のようにシミュレートすることができることを信じている:私はこれで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 

あなたの条件に合致条件が指定されていなければ、それらはクエリにはありません。

+0

私は間違いが今どこにあるのかを見ています....ありがとうあなたの助け、私は本当にそれを感謝します! – Rodrigo

+0

役に立つと思われる場合は、[回答を受け入れる]ことができます(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。私が助けてくれてうれしいです:) –

+0

私はちょうどやったが、残念ながら私はこれのための解決策を見つけることができませんでした。このクエリはすべてのケースを解決するわけではありません。だから私は今この構造に固執しています(次のコメントを参照してください) 交差点を実行しようとしているように(成功なし)...これは数時間:(FROM – Rodrigo