Using Sub-query

SelectQuery qryOrder = OQL

  .Select(NW.Order.OrderID, NW.Order.OrderDate, NW.Order.RequiredDate)

  .From(NW.Order)

  .Where(

    NW.Order.CustomerID.In(OQL

      .Select(NW.Customer.CustomerID)

      .From(NW.Customer)

      .Where(NW.Customer.ContactTitle == "Owner")));

The SQL statements generated as follows (taking SQL Server as an example)

SELECT

  [Orders].[OrderID] , [Orders].[OrderDate] , [Orders].[RequiredDate]

FROM [Orders]

WHERE

  [Orders].[CustomerID] IN

    (

      SELECT [Customers].[CustomerID]

      FROM [Customers]

      WHERE

        [Customers].[ContactTitle] = 'Owner'

    )

In order to make it easy to read and maintain, the preceding Select statements can be divided into:

SelectQuery qryCustomer = OQL

  .Select(NW.Customer.CustomerID)

  .From(NW.Customer)

  .Where(NW.Customer.ContactTitle == "Owner");

 

SelectQuery qryOrder = OQL

  .Select(NW.Order.OrderID, NW.Order.OrderDate, NW.Order.RequiredDate)

  .From(NW.Order)

  .Where(NW.Order.CustomerID.In(qryCustomer));

The SQL statements generated as follows (taking SQL Server as an example)

SELECT

  [Orders].[OrderID] , [Orders].[OrderDate] , [Orders].[RequiredDate]

FROM [Orders]

WHERE

  [Orders].[CustomerID] IN

    (

      SELECT [Customers].[CustomerID]

      FROM [Customers]

      WHERE

        [Customers].[ContactTitle] = 'Owner'

    )

Related Topics

Multi-table Select