2012-11-26 11 views
6

in PostgreSQL posso utilizzare subquery in condizione di joinÈ possibile utilizzare la sottoquery nella condizione di join in Access?

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

Ma quando cerco di usarlo in Access

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

ottengo errore di sintassi. In realtà è impossibile in Access o solo il mio errore?

So che posso ottenere lo stesso risultato con WHERE, ma la mia domanda riguarda le possibilità di JOIN in Access.

risposta

8

Non è possibile, per il MSDN documentation:

Sintassi

FROM tabella1 [LEFT | DESTRA] JOIN tabella2 ON table1.field1 compopr table2.field2

E (sottolineatura mia):

campo1, campo2: I nomi dei campi che sono uniti. I campi devono essere dello stesso tipo di dati e contenere lo stesso tipo di dati, ma non è necessario che abbiano lo stesso nome.

Sembra che non sia possibile nemmeno avere valori codificati nel join; è necessario specificare il nome della colonna per unirsi contro.

Nel tuo caso, si vorrebbe:

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

+1 sto allontanando dal sub-query in quasi tutti i casi, come le tabelle derivate forniscono maggiori prestazioni nella maggior parte dei casi –