Внешнее соединение в доступе
Всего у меня 3 таблицы, а именно table1, table2 & 3.
Данные в таблицах 2 и 3 довольно большие, поэтому я хочу внешнее соединение таблиц 2 и 3, основываясь на ключах, например, член № и № нет, прежде чем присоединиться к таблице 1.
SELECT
A.field1,
A.field2,
A.field3,
A.field20,
B.specialfield1, B.specialfield2,
C.specialfield7, B.specialfield8
FROM (table1 AS A LEFT JOIN table2 AS B
ON (A.field1 = B.field1)
AND (A.field2 = B.field2)
AND (A.field3 = B.field3))
LEFT JOIN table3 AS C
ON (A.field1 = C.field1)
AND (A.field2 = C.field2)
AND (A.field3 = C.field3))
Что я могу сделать? Я использую Access97 и кажется, синтаксис, который я знал от сервера SQL, может не работать прямо там. Заранее спасибо!!
Ура VB
2 ответа
Гм.. я считаю, что это должно работать
SELECT Table1.[field1], Table1.[field2], Table1.[field3], Table2.[field 1], Table3.[field 2]
FROM (Table1 INNER JOIN Table2 ON Table1.sno = Table2.fk_table1) INNER JOIN Table3 ON Table1.sno = Table3.fk_table1;
Примечание: Table1.sno является первичным ключом.
Каковы типы данных полей, к которым вы присоединяетесь? Это поможет нам получить представление.
Используйте HASH JOIN, если ваши большие таблицы оба проиндексированы или оба не проиндексированы. Его производительность также увеличивается Вот ссылка: http://www.sqlserverblogforum.com/2011/10/merge-join-vs-hash-join-vs-nested-loop-join/