FROM table [AS alias] | 
     (field_with_tablename) |
     tab1 [INNER] JOIN tab2 ON condition |   
     tab1 LEFT [OUTER] JOIN tab2 ON condition  
     [CLIENT SPECIFIED] [BYPASSING BUFFER] [UP TO n ROWS]

Neben der SELECT-Klausel ist die FROM-Klausel obligatorisch. Sie bestimmt, aus welcher Tabelle die Daten gelesen werden sollen. Der Tabellenname kann dabei statisch oder dynamisch angegeben werden. Drei optionale Zusätze bestimmen Details des Selektionsvorganges. Sie gehören logisch nicht unbedingt zur FROM-Klausel, die Zuordnung ist eher historisch bedingt. Mit CLIENT SPECIFIED wird das automatische Mandantenhandling abgeschaltet. Das Mandantenfeld muß dann manuell ausgewertet werden. Der Zusatz BYPASSING BUFFER löst das direkte Lesen von der Datenbank aus, eventuelle Puffer werden dabei ignoriert. Mit UP TO n ROWS kann bestimmt werden, wie viele Datensätze zurückgeliefert werden sollen. In der FROM-Klausel können weiterhin durch die Angabe von Tabellenverknüpfungen durch das Schlüsselwort JOIN mehrere Tabellen miteinander verbunden werden. Ein sogenannter INNER JOIN verbindet zwei Tabellen an Hand einer logischen Bedingung. Die Ergebnismenge des Joins enthält alle Spalten der beteiligten Tabellen, wobei nur Datensätze aus tab1 berücksichtigt werden, zu denen in tab2 ein Datensaatz existiert, der die angegebene Bedingung erfüllt. Bei einen OUTER JOIN sind in der Ergebnismenge allen Datensätze aus tab1 enthalten. Diese werden durch die Daten aus tab2 ergänzt, falls ein passender Datensatz existiert. Wenn nicht, werden die übrigen Felder mit Null aufgefüllt.