The FROM clause specifies the collections of objects to which the query is to be applied. Each collection is identified either by an abstract schema name and an identification variable, called a range variable, or by a collection member declaration that identifies a multivalued relationship and an identification variable.
Conceptually, the semantics of the query is to first form a temporary collection of tuples R. Tuples are composed of elements from the collections identified in the FROM clause. Each tuple contains one element from each of the collections in the FROM clause. All possible combinations are formed subject to the constraints imposed by the collection member declarations. If any schema name identifies a collection for which there are no records in the persistent store, then the temporary collection R will be empty.
Example: FROM clause
DeptBean contains records 10, 20 and 30 in the persistent store. EmpBean contains records 1, 2 and 3 that are related to department 10 and records 4, 5 that are related to department 20. Department 30 has no related employees.This forms a temporary collection R that contains 15 tuples.FROM DeptBean d, EmpBean eThis forms a temporary collection R that contains 9 tuples.FROM DeptBean d, DeptBean d1This forms a temporary collection R that contains 5 tuples. Department 30 because it contains no employees will not be in R. Department 10 will be contained in R three times and department 20 will be contained in R twice.FROM DeptBean d, IN (d.emps) AS e
After forming the temporary collection the search conditions of the WHERE clause will be applied to R and this will yield a new temporary collection R1. The ORDER BY and SELECT clauses are applied to R1 to yield the final result set.
An identification variable is a variable declared in the FROM clause using the operator IN or the optional AS.is equivalent toFROM DeptBean AS d, IN (d.emps) AS eFROM DeptBean d, IN (d.emps) e
An identification variable that is declared to be an abstract schema name is called a range variable. In the query above "d" is a range variable. An identification variable that is declared to be a multivalued path expression is called a collection member declaration. "d" and "e" in the example above are collection member declarations.
Note that the following path expression is illegal as a collection member declaration because it is not multivaluede.dept.mgr
See AlsoEJB query language
Using EJB query