where 句を使用して、テーブル間の結合を作成することは完全に可能です。実際、これは実際に行っていることのより明確な情報につながることがわかっているため、私がよく行うことであり、期待する結果が得られない場合は、少しずつデバッグできます。
そうは言っても、結合は確かに書くのがずっと速いです!
私は SQL に慣れていないので、覚えていない可能性があります。また、使用している DBMS について言及していないため、コードを含めるつもりはありません。コードはすべてわずかに異なります。
覚えておくべきことは、結合は同じデータ (および型) を持つ列に対して機能するということです。
各テーブルに同じ名前の「結合」フィールドがあると、はるかに簡単になります。
join on <nameOfField>
ただし、異なるテーブルで異なる名前を持つフィールドを使用する場合は、完全修飾名をリストする必要があります。つまり、tableName.FieldName
自然、内と外、左と右に問題がある場合は、テーブル間の共通点が自然であるベン図を考える必要があります。2 つのテーブルのみを使用している場合、内側と外側は左と右 (ベン図では各テーブルが 1 つの円) と同等であり、左と右は select のメイン部分のリスト内のテーブルの順序です ( 1 番目は左、2 番目は右です)。
3 番目のテーブルを追加すると、ここでこれらのキーワードを使用して任意のクロス オーバー セクションを選択できます。
ただし、プライマリ選択を実行して一時テーブルを作成し、この一時テーブルを使用して次の結合を実行する方が簡単であることが常にわかっています (効果的には、自然または左と右を再度使用するだけで済みます)。繰り返しますが、これはデバッグが簡単です。
最善の方法は、実験して、見返りに何が得られるかを確認することです。あなたのテーブルの図がなければ、これは私が提供できる最高のものです.
簡単に言えば...
ネストされた select where field = (テーブル where field = から選択)
および一時テーブル
(私が思うに)デバッグが簡単です...しかし、もっと書く必要があります!
デビッド。