diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py
index b37e6b93..b8cc55e5 100644
--- a/gluon/sqlhtml.py
+++ b/gluon/sqlhtml.py
@@ -29,7 +29,7 @@ from gluon.html import URL, FIELDSET, P, DEFAULT_PASSWORD_DISPLAY
from pydal.base import DEFAULT
from pydal.objects import Table, Row, Expression, Field, Set, Rows
from pydal.adapters.base import CALLABLETYPES
-from pydal.helpers.methods import smart_query, bar_encode, _repr_ref
+from pydal.helpers.methods import smart_query, bar_encode, _repr_ref, merge_tablemaps
from pydal.helpers.classes import Reference, SQLCustomType
from gluon.storage import Storage
from gluon.utils import md5_hash
@@ -2329,7 +2329,7 @@ class SQLFORM(FORM):
if not isinstance(left, (list, tuple)):
left = [left]
for join in left:
- tablenames += db._adapter.tables(join)
+ tablenames = merge_tablemaps(tablenames, db._adapter.tables(join))
tables = [db[tablename] for tablename in tablenames]
if fields:
# add missing tablename to virtual fields