に変換する従来のSQL外部結合をANSIに変換する必要があります。レガシーSQL外部JOIN * =、= *をANSI
そのビーイングの理由は、我々は、SQL 2016
レガシーSQLクエリにレガシーDBインスタンス(?5分の2000)からアップグレードしている: -
を選択--MyデータSelect--する
FROM counterparty_alias ca1,
counterparty_alias ca2,
counterparty cp,
party p
WHERE cp.code *= ca1.counterparty_code AND
ca1.alias = 'Party1' AND
cp.code *= ca2.counterparty_code AND
ca2.alias = 'Party2' AND
cp.code *= p.child_code AND
cp.category in ('CAT1','CAT2')
ここで、Party1とParty2パーティタイプのコードで、CAT1とCAT2がカテゴリコードです。彼らはただのデータです。値は本当に問題ではないので、私はそれを抽象化しました。
*をLEFT OUTER JOINに置き換えようとすると、Dataの行数とデータそのものの両方で、Dataに大きな不一致が生じます。
私が使用しているクエリはこれです:私は間違っ
何をしているのですか?
すべての3つの従来の結合で、CP(相手方)の表は、左手にあり、明らかに
FROM
counterparty cp
LEFT OUTER JOIN counterparty_alias ca1 ON cp.code = ca1.counterparty_code
LEFT OUTER JOIN counterparty_alias ca2 ON cp.code = ca2.counterparty_code
LEFT OUTER JOIN party p ON cp.code = p.child_code
WHERE
ca1.alias = 'Party1' AND
ca2.alias = 'Party2' AND
cp.category in ('CAT1','CAT2')
をSelect--する
をSelect--する--Myデータを選択* =の側。そのため、3つのテーブルすべてでLEFT OUTER JOINに変換する必要があります。しかし、私の解決策は動作していないようです。 どうすればこの問題を解決できますか?私はここで間違って何をしていますか?
ご協力いただければ幸いです。
--Myデータを選択:事前のおかげ:)
EDIT
に私はまた、このような別のクエリを持っています
FROM dbo.deal d, dbo.deal_ccy_option dvco, dbo.deal_valuation dv, dbo.strike_modifier sm WHERE d.deal_id = dvco.deal_id AND d.deal_id = dv.deal_id AND dvco.base + dvco.quoted *= sm.ccy_pair AND d.maturity_date *= sm.expiry_date
この場合、dvcoテーブルとdテーブルの両方が同じテーブルsm上でLEFT OUTER JOINを実行しているようです。これについて私はどのように進めますか? 同じテーブルに参加し、別名sm1とsm2を使用していますか? また、SMを中央テーブルとして使用し、dvcoテーブルとdテーブルのRIGHT OUTER JOINに結合を変更する必要がありますか?
'tab1 LEFT JOIN tab2 ... WHERE tab2.columnY =' 'tab2'の' WHERE'句の条件が 'NULL'sに関係するものではない場合、あなたは効果的に' 「LEFT JOIN」を「INNER JOIN」に変換する。 –
@Damien_The_Unbeliever:詳しく教えてもらえますか?面白そうだが、私はあなたが意味するものを得ていない。 –
あなたは 'WHERE'節に' counterparty_alias'という条件を設定しています。その条件は、 'JOIN'が成功した場合にのみ真となります。したがって、あなたがLEFT JOINを書いているにもかかわらず、あなたが実際に達成していることは、あなたが「INNER JOIN」と書いたのと同じです。あなたの質問はそれを編集して*サンプルデータ*と*期待される結果*を追加することで目覚ましい改善が見られます。さもなければ、人々は推測するでしょう。また、現在の問題を*特性化しようとしてください - それはあまりにも多くの行を返すか、少なすぎますか?余分な/欠けている行は、他の行とは違うものを共通にしていますか? –