SQL15: 'SQL JOINS'

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);