結合は値を返しますが、値は両方のテーブルにあります。私の構文は悪いですか?左外部結合は両方のテーブルで結果を返します
select distinct source.[Manufacturer]
from Products2.dbo.sourceexport source
left join Products2.dbo.uniqueprods u
on source.[Manufacturer]=u.mfg
where u.mfg is null;
select [Manufacturer] from Products2.dbo.sourceexport where [Manufacturer]='XYZ';
select mfg from Products2.dbo.uniqueprods where mfg='XYZ'
選択/ステートメントに参加する約20行を返し、それはまた、行のいくつかのフォーマット「XYZ」のものであってもよいが、最初の行は、「XYZ」です。 2番目と3番目のステートメントに結果をコピーすると(私のフィールドにはltrim(rtrim(u.mfg))
の有無にかかわらず)、それぞれ15と260の結果が得られます。
左側の外部結合の結果は、右側の表では0行、260では予想していたよりも多くの結果が返されます。
編集:以前の質問で私はあまりにも冗長であると言われました。どうやら、私は十分に冗長ではない。ありがとうございました。 左外部結合が必要です。意味、私はに存在しないsource
のメーカーを望みます。すべての行のすべてのフィールドを返すことができます。それが問題の解決に役立つ場合は、その結果から別のメーカーを選択するための第2ステップを作成できます。
私はクライアントが機密扱いと考える情報を含む数百万のレコードを持っています。これらのウィジェットの製造業者の業界に言及することは適切ではありません。クライアント以外の人にとって特に興味深いものでもありません。
テーブルsource
は値(a、b、c、d、f、h、j、l)を持ち、テーブルu
は値(a、c、e、g、g、i、k、l) 。値(b、d、f、h、j)を返したい私はそれらにcを持たない戻り値を得ています。私はそれが(b、d、f、h、j)のすべてを含んでいるかどうか分からない。
別の質問を述べる:ステートメントの結果がどれも右の表にない左外部結合を書くにはどうすればよいですか?
Edit2:以下のステートメントからは、構文が悪くないようです。私の最初の編集質問の再記述を無効にする。元の質問文に戻り、なぜ私の左外部結合は両方のテーブルにある戻り値を返しますか?
見えない文字(ltrim(rtim())で解決する必要があります)とフィールドの種類以外に、結合を誤動作させる要因は何ですか?
サンプルテーブルのデータ、現在の結果と期待される結果を追加してください! – jarlh
あなたの質問はあまり明確ではありませんが、sourceexportには存在するがユニーク製品ではない行も必要ですか?また、結合クエリにはdistinct句がありますが、2番目と3番目のwhere文にはありません。それは行数が異なることがあります。 @ jarlhで述べたように休憩してください。さらに詳しい情報を追加してください。 –
@AkankshaSinghありがとうございます。これが私の最初のSQL質問です。例えば、VBAは、情報がはるかに少ないことを要求し、そのオーディエンスに慣れてきたときに書いていました。そして、はい、明確な条項があります。行数は関係ありませんが、行数をインクルードする唯一の理由は、最初の文の結果が3番目の文の0行を返すためです。 0以外のものは望ましくありません。おそらく、行数が0ではないと言っているはずです。 – CWilson