0

-- クエリ 1

select distinct af.Code from AIR af inner join
Float spf on spf.Station = af.AirID or
spf.DeptStation = af.AirID

-- クエリ 2

select distinct af.Code from AIR af 
    inner join Float spf on spf.Station = af.AirID
    inner join Float spf1 on spf.DeptStation = af.AirID

最初のクエリでは、2 番目のクエリと比較して、さらにいくつかのエントリ (約 10) を取得します。私によると、この違いは存在しないはずです。誰かがクエリを分解して違いを教えてくれれば(もしあれば)、それは役に立ちます。

4

2 に答える 2

0

このクエリ:

select distinct af.Code from AIR af 
inner join Float spf on spf.Station = af.AirID
inner join Float spf1 on spf1.DeptStation = af.AirID

「and」結合に等しい

select distinct af.Code from AIR af
inner join Float spf on spf.Station = af.AirID and spf.DeptStation = af.AirID

編集 2 番目のクエリでエラーが発生しました。そのはず

内部結合 Float spf1 on spf1.DeptStation = af.AirID

于 2013-06-20T10:32:09.070 に答える
0

2 番目のクエリでは、1 つの AirID 前行を同時に 2 つの異なる値に一致させます(AND)。そのため、JOIN は両方が一致する結果のみを返しますが、これはもちろんナンセンスです。

最初のクエリでは、1 つの AirID を2つの異なる列のいずれかに一致させます (OR)。したがって、いずれかの値に一致すると正しい結果が得られます。

最初のものを次のように書き直すことができます。これは、OR 性を実証するのに役立つ場合があります。

select af.Code from AIR af 
    inner join Float spf on spf.Station = af.AirID
UNION
select af.Code from AIR af 
    inner join Float spf on spf.DeptStation = af.AirID
于 2013-06-20T10:43:20.143 に答える