0

SQLに慣れているなら、これはおそらく簡単なことですが、私はそうではありません。

私はこのクエリを持っています:

SELECT * 
FROM myTable 
LEFT JOIN anotherTable 
    ON myTable.myField=anotherTable.anotherField

実際、このクエリは、結合条件を満たすmyTableからすべてを返します(私の理解の範囲内で)。このクエリはうまく機能しますが、別のテーブルから別のフィールドを選択したいと思います。私がやりたいのは次のようなものです。

SELECT myTable.*, myTable2.aSpecificField 
FROM myTable, myTable2 
LEFT JOIN anotherTable 
    ON myTable.myField=anotherTable.anotherField 
WHERE myTable.id = myTable2.id

ただし、これは機能しません。LEFTJOINに関するエラーメッセージが表示されます。myTable2のaSpecificFieldを、両方のテーブルのIDが一致する行に追加したいと思います。

このクエリを正しく作成するのを手伝ってもらえますか?ありがとうございました。

4

3 に答える 3

1

Microsoft Accessのクエリデザインウィンドウでは、ウィザードまたはドラッグアンドドロップを使用してクエリを作成できます。次に、デザインビューでSQLを整理できます。テーブルをデザイングリッドに追加し、結合フィールドを1つのテーブルから次のテーブルにドラッグしてから、必要なフィールドを選択します。

Access SQLの知識を深めたい場合は、次のように読むことができます...

これらはJet(<2007)用ですが、ACE(> = 2007)はSQLに関してそれほど違いはありません。

基本的なMicrosoftJetSQL forAccess2000
中級MicrosoftJetSQL forAccess2000
高度なMicrosoftJetSQL for Access 2000 Jet Database Engine

デザインの背景

リレーショナルデータベース設計の基礎、Paul Litwin、2003年

よくお勧めのMSAccessブック

クックブックにアクセスする

于 2012-10-31T13:41:49.467 に答える
0

を使用するのではなく、フィールドをリストします*。そのようです:

SELECT m.Field1, m.Field2, m2.Field1 FROM
MyTable m LEFT JOIN MyTable2 m2 ON m2.ID=m1.ID

あなたのコメントによると、table3は別のテーブルとどのような関係がありますか?その関係に基づいてそれを含めるだけです

SELECT m.Field1, m.Field2, m2.Field1, m3.Field1 FROM
MyTable m LEFT JOIN MyTable2 m2 ON m2.ID=m1.ID LEFT JOIN MyTable3 m3 ON m3.ID=m2.ID
于 2012-10-30T14:32:34.893 に答える
0

では、両方のテーブルでIDが一致する行を返したいですか?そして、それらが一致しない場所ではありませんか?では、左または右の結合ではなく、単純な結合ですか?

Select tab1.*,tab2.* from mytable tab1 
  INNER JOIN mytable2 tab2 
    ON tab1.id = tab2.otherid

または、結合するテーブルが3つある場合はどうなりますか?

Select tab1.*,tab2.*,tab3.* from mytable tab1 
  INNER JOIN mytable2 tab2 
    ON tab1.id = tab2.otherid 
  INNER JOIN mytable3 tab3 
    ON tab1.id = tab3.anotherid

必要に応じて、tabX。*を特定のフィールドに置き換えますか?

于 2012-10-30T14:56:41.253 に答える