Una clàusula JOIN s'utilitza per combinar files de dues o més taules, basant-se en una columna relacionada entre elles.
Exemple de JOIN amb KeyValue
Tingueu en compte que la columna "CustomerID" de la taula "Comandes" fa referència a l'"CustomerID" de la taula "Clients".
Aleshores, podem crear la següent instrucció SQL (que conté un INNER JOIN), que selecciona registres que tenen valors coincidents en ambdues taules:
SQL:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
GenQL:
final String SEPARATOR = "|";
SelectMultipleKeyValue<Long> smskv;
smskv = new SelectMultipleKeyValue<Long>(OrdersFields.ORDERID.select, SEPARATOR, new OrdersQueryPath().CUSTOMERS().CUSTOMERNAME().select, OrdersFields.ORDERDATE.select);
List<KeyValue<Long>> list;
list = getOrdersManager().executeQuery(smskv);
print(OrdersFields.ORDERID.javaName, CustomersFields.CUSTOMERNAME.javaName + SEPARATOR + OrdersFields.ORDERDATE.javaName, list);
Exemple de JOIN amb Select3Columns
Tingueu en compte que la columna "CustomerID" de la taula "Comandes" fa referència a l'"CustomerID" de la taula "Clients".
Aleshores, podem crear la següent instrucció SQL (que conté un INNER JOIN), que selecciona registres que tenen valors coincidents en ambdues taules:
SQL:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
GenQL:
Select3Columns<Long, String, Date> s3c;
s3c = new Select3Columns<Long, String, Date>(OrdersFields.ORDERID.select, new OrdersQueryPath().CUSTOMERS().CUSTOMERNAME().select, OrdersFields.ORDERDATE.select);
List<Select3Values<Long, String, Date>> list;
list = getOrdersManager().executeQuery(s3c);
print(list, OrdersFields.ORDERID.javaName, CustomersFields.CUSTOMERNAME.javaName, OrdersFields.ORDERDATE.javaName);
JOIN Exemple utilitzant Select4Columns i ordena
Tingueu en compte que la columna "CustomerID" de la taula "Comandes" fa referència a l'"CustomerID" de la taula "Clients".
Aleshores, podem crear la següent instrucció SQL (que conté un INNER JOIN), que selecciona registres que tenen valors coincidents en ambdues taules:
SQL:
SELECT Orders.OrderID, Orders.CustomerID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
GenQL:
Select4Columns<Long, Long, String, Date> s4c;
s4c = new Select4Columns<Long, Long, String, Date>(OrdersFields.ORDERID.select, OrdersFields.CUSTOMERID.select, new OrdersQueryPath().CUSTOMERS().CUSTOMERNAME().select, OrdersFields.ORDERDATE.select);
OrderBy orderby = new OrderBy(OrdersFields.CUSTOMERID, OrderType.ASC);
List<Select4Values<Long, Long, String, Date>> list;
list = getOrdersManager().executeQuery(s4c, orderby);
print(list, OrdersFields.ORDERID.javaName, OrdersFields.CUSTOMERID.javaName, CustomersFields.CUSTOMERNAME.javaName, OrdersFields.ORDERDATE.javaName);