2012-11-26 2 views
6

は条件AccessでJoin条件でサブクエリを使用できますか?私はサブクエリを使用することができますPostgreSQLで

SELECT * 
FROM table1 LEFT JOIN table2 
    ON table1.id1 = (SELECT id2 FROM table2 LIMIT 1); 

に参加しかし、私はアクセス

SELECT * 
FROM table1 LEFT JOIN table2 
    ON table1.id1 = (SELECT TOP 1 id2 FROM table2); 

でそれを使用しようとすると、私は、構文エラーが発生します。それは実際にアクセスできないのか、それとも私の間違いでしょうか?

私はWHEREと同じ結果を得ることができることを知っていますが、私の質問はJOINの可能性についてです。

答えて

8

それはMSDN documentationごとに、ことはできません。TABLE1 [左から

構文

|

フィールド1、フィールド2:接合されているフィールドの名前RIGHT]表2 ON table1.field1 compopr table2.field2

AND(強調鉱山)に参加。フィールドは同じデータ型で、同じ種類のデータを含む必要がありますが、同じ名前を持つ必要はありません。

あなたの結合にハードコードされた値さえできないようです。結合する列名を指定する必要があります。あなたのケースでは

、あなたが望む:

SELECT * 
FROM Table1 
LEFT JOIN (
    SELECT DISTINCT TOP 1 ID 
    FROM Table2 
    ORDER BY ID 
) Table2Derived ON Table1.ID = Table2Derived.ID 
+0

1派生テーブルは、ほとんどの場合、より高い性能を与えるとして、私はほとんどすべてのインスタンスで離れたサブクエリから移動しています –

関連する問題