[解決済み] LEFT OUTER JOINはどのように左のテーブルに存在するよりも多くのレコードを返すことができますか?
質問
非常に基本的なLEFT OUTER JOINを使用して、左側のテーブルからすべての結果を返し、さらに大きなテーブルからいくつかの追加情報を返しています。左のテーブルには4935レコードがありますが、追加のテーブルにLEFT OUTER JOINすると、レコード数はかなり大きくなります。
私の知る限り、LEFT OUTER JOINは左のテーブルのすべてのレコードと右のテーブルのマッチしたレコードを返し、マッチできなかった行はNULL値を返すというのは絶対的な福音です。
SQLクエリは以下の通りです。
SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM SUSP.Susp_Visits LEFT OUTER JOIN
DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum
おそらく、私が構文を間違えたか、LEFT OUTER JOINについての私の理解が不完全なのでしょう。
追記
LEFT OUTER JOINSの理解が深まりました。しかし、このクエリを修正して、左側のテーブルに存在するのと同じ数のレコードしか返されないようにする方法をどなたか教えてください。
このクエリは純粋にレポートを作成するためのもので、重複するマッチは単に問題を混乱させるだけです。
/追記
解決方法は?
LEFT OUTER JOINは、LEFTテーブルのすべてのレコードを、可能な限りRIGHTテーブルと結合して返します。
したがって、LEFT の 1 行が RIGHT の 2 行にマッチした場合、INNER JOIN と同様に 2 つの行が返されます。
EDIT あなたの編集を受け、あなたのクエリをさらに見てみたところ、LEFTテーブルからのデータのみを返しているように見えます。したがって、LEFTテーブルのデータのみが必要で、LEFTテーブルの各行に対して1行だけ返したい場合は、JOINを実行する必要はなく、LEFTテーブルから直接SELECTを実行すればよいのです。
関連
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み] ORA-00920: 無効な関係演算子
-
[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み】INTERSECTとINNER JOINは根本的に違うのか?[重複している]
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQLクエリで2つの列から値を引き算する
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。
-
[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?
-
[解決済み] VBA - ADODB.CommandTextの実行