0

私は調査を行ってきましたが、1 つのクエリを使用して複数のテーブルからデータを取得する方法を見つけることができません。私が達成したいのは、Access データベース内の 1 つのテーブルから情報を取得し、その情報を使用して同じデータベース内の別のテーブルからより多くのデータを取得することです

これが私がこれまでに持っているコードです...

                string end = "ENDDATE";
                string qual = "CGA0113";
                string start = "START";

                ad.SelectCommand = new OleDbCommand("SELECT* FROM [AC_ECONOMIC] Where KEYWORD = '" + end + "'AND QUALIFIER = '" + qual + "' AND EXPRESSION LIKE 'SN%'", con);

AC_ECONOMIC テーブルの上記のクエリと同じ SN を持つ AC_PROPERTY という別のテーブルからデータを取得できるようにしたいと考えています。私は結合を研究していて、それが進むべき道だと信じていますが、構文やそれが機能するかどうかはよくわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

正解です。内部結合が適しています。基本的に、2 つのテーブルを共通のフィールドで結合するステートメントを作成する必要があります。このようなもの:

SELECT * FROM [AC_ECONOMIC] a
INNER JOIN [AC_PROPERTY] b
on [AC_ECONOMIC].SN=[AC_PROPERTY].SN   
Where KEYWORD = '" + end + "'AND QUALIFIER = '" + qual + "' AND EXPRESSION LIKE 'SN%'

上記のステートメントは単なる例です。2 つのテーブルの共通の列が実際に「SN」と呼ばれているかどうかはわかりません。

アップデート:

@Geek で提案されているように、ステートメントでテーブルを参照した後にテーブルにエイリアスを設定することもできます。これにより、毎回完全なテーブル名を入力する必要がなくなります。たとえば、上記のステートメントは次のようにも記述できます。

SELECT a.*, b.* FROM [AC_ECONOMIC] a
INNER JOIN [AC_PROPERTY] b
on a.SN=b.SN   
Where a.KEYWORD = '" + end + "'AND a.QUALIFIER = '" + qual + "' AND b.EXPRESSION LIKE 'SN%' 

WHERE 句が "a" (AC_ECONOMIC) と b (AC_PROPERTY) の両方の列を使用してフィルター処理する方法に注意してください。

于 2013-07-23T14:40:52.003 に答える