2016-05-16 8 views
0

私は2つのクエリで得られたデータと、運転テーブルの他のデータの後にいます。私は次のコードを使用していますが、私の結果が間違っていると感じています。クエリロジックの最適なアプローチ

select * from(
select * from tbl_a a 
inner join tbl_b b on (a.id = b.id and a.col_a = b.col_b and a.col_c = '1') 

union all 

select * from tbl_a a 
inner join tbl_b b on (a.col_a = b.col_b and a.col_c = '1') 
where (1=1) 
and a.id <> b.id 
and a.start_time <= b.u_start_time 
and a.end_time >= b.u_end_time 

union all 

select * from tbl_a a 
where a.another_id 
NOT IN (-- either query above) 

) results; 

私は、これは理にかなっているか、私はおそらくこれの一部を簡略化することができるかどうかを知りたいのですが...ここで

+0

SQLFiddleでサンプルデータベースを作成できますか?それぞれの質問について少し説明することに感謝します。 – Jigar

答えて

0

は、最初の2つの組合のクエリで、何であるかは明らかではありません第3組合条件

SELECT * 
FROM 
tbl_a a 
left join tbl_b b on b.id = a.id and b.col_b = a.col_a 
left join tbl_b b1 on a.col_a= b1.col_b and a.id<>b1.id and a.start_time<=b1.u_start_time and a.end_time>=b1.u_end_time 
WHERE 
a.col_c=1 
and COALESCE(b.id,b1.id) is not null 
関連する問題