ここコンバートSQLは、92私はANSI 92にANSI 89からSQL文を変換しようとしています
がある( "(+)" の中に "OUTHER登録しよう" transofrmすることを意味します)コード:
select a.*, p.price
from article a, prices p
where a.product_id = p.product_id(+)
and trunc(sysdate) + 1 between a.date_from and date_to
and trunc(sysdate) + 1 between p.date_from(+) and p.date_to(+);
私は(+)、左または右に参照していることを知って、JOIN、それが置かれpossitionに依存しますが、私は最後の行を変換するためにどのようにそれを得ることができない( and trunc(sysdate) + 1 between p.date_from(+) and p.date_to(+)
)
今まで、私はフォローをしましたing:
select a.*, p.price
from article a
left join prices p
on a.product_id = p.product_id
where trunc(sysdate) + 1 between a.date_from and date_to
しかし、最後の条件をどのように変換するかわかりません。
誰か助けてもらえますか?私は各テーブルにはdate_from
とdate_to
を、持っていることを仮定していると、あなたは両方の範囲と比較することを意味していること
'left join'を使うと、'(+) 'はもう必要ありません。さまざまなansi92のジョインについて[興味深い古い投稿](https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join?rq=1)あなたは読むことができます。また、 'left join 'の' on'の 'between 'の基準を使用することは可能です(そうはほとんどありませんが)。 – LukStorms
'とtrunc(sysdate)+ 1をp.date_fromとp.date_to; '? –
@LukStorms:私の間違い、私は試しに「(+)」を忘れてしまった。とにかく、記事は良いですが、すでにLEFT/RIGHT/INNER/FULL結合の違いを知っています。私はANSI 92 – mikcutu