Microsoft KB Archive/114150

= MSQuery: Query to Find Unmatched Records Between Two Files =

Article ID: 114150

Article Last Modified on 10/11/2006

-

APPLIES TO


 * Microsoft Excel 97 Standard Edition
 * Microsoft Excel 95 Standard Edition
 * Microsoft Excel 5.0 Standard Edition
 * Microsoft Query 2000

-



This article was previously published under Q114150



SUMMARY
This article describes how to create a Subtract query that compares two tables and returns a result set that includes only those records from the first table that do not have matching records in the second table.



Overview of the Subtract Query Procedure
To perform a Subtract query, create an outer join that joins the two tables, and then add a condition to the query that filters out all of the matching records.

Example of the Subtract Query Procedure
This example uses the sample dBASE files that ship with Microsoft Excel. The default location for these files is:   Version of Excel                      Location 5.0             WINDOWS\MSAPPS\MSQUERY 7.0             Program Files\Common Files\Microsoft Shared\MSQuery 97              Program Files\Microsoft Office\Office If these files are not installed on your computer, run Microsoft Excel or Office Setup and install Microsoft Query again.

In this example, the source table and the destination table are the two files that you want to join. The destination table is the table that contains the unmatched records. Note that the contents of the source and destination tables are left unchanged.

To create a Subtract query, follow these steps:

 In Microsoft Query, click New Query (in Query 97 click New) on the File menu. Add the source and destination tables to the query. (The procedure for doing this will depend on the data source).

In Excel 5.0 and 7.0:

In the Select Data Source dialog box, choose Other, select dBASE Files and then choose the Use button. Change the current directory to Windows\Msapps\Msquery. Select the Customer.dbf file (the source file), and choose Add. Then, select Employee.dbf, click Add, and then click Close.

In Excel 97:

Select your dBASE data source in the Choose Data Source dialog box, clear the "Use the Query Wizard to create/edit queries" check box and click OK. Select Orders.dbf, click Add, select Customer.dbf, click Add, then click Close. On the Table menu, click Joins. Choose a join type that specifies ALL records from the destination table and ONLY matching records from the source table.

In Excel 5.0 and 7.0:

From the Left box, select Customer.CITY, and from the Right: drop down, select employee.CITY. Under Join Includes, select option 3 (the Select ALL Values From Employee and ONLY Records from Customer Where customer.CITY = Employee.CITY option). Choose Add, and then choose Close.

In Excel 97:

From the Left box, select Customer.CUSTMR_ID, and from the Right box, select Orders.CUSTMR_ID. Under Join Includes, select the option for "Select ALL Values From 'Customer' and ONLY Records from 'Orders' Where Customer.CUSTMR_ID = Orders.CUSTMR_ID." Click Add, and then click Close. Add a criteria field to match on for both tables, and add the condition Is Null.

In Excel 5.0 and 7.0:

On the Criteria menu, click Add Criteria, and make the following changes:

 In the Field box, select customer.CITY. In the Operator box, select Is Null.

Choose Add, and then choose Close.

In Excel 97:

On the Criteria menu, click Add Criteria, and make the following changes:

 In the Field box, select Orders.CUSTMR_ID.</li> In the Operator box, select Is Null.</li></ul>

Click Add, and then click Close.</li> Show the records in the Data pane.

In Excel 5.0 and 7.0:

In the Data pane (below the Criteria pane), select the blank column heading, click the drop-down arrow, and select employee.CITY.

The Data pane will contain records that exist only in the destination table, but not in the source table. In this example, the value Redmond should appear in the column labeled "CITY." This is the only city listed in the EMPLOYEE table that is not in the CUSTOMER table.

In Excel 97:

Double-click the CUSTMR_ID field in the Customer table displayed in the Table pane. This will add the CUSTMR_ID field to the Data pane and display the records where the CUSTMR_ID in the Customer table is not contained in the Orders table.</li></ol>

WARNING: Your use or modification of the SQL statement provided in this article is at your own risk. Microsoft provides this SQL statement "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. Microsoft does not support modifications of the SQL statement to suit specific customer requirements.

<div class="references_section">