ID: Q114150
The information in this article applies to:
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.
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.
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:
1. 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.
2. 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.
3. 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.
- In the Operator box, select Is Null.
Click Add, and then click Close.
4. 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.
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.
"Microsoft Query User's Guide," version 1.0, Chapter 6, "What Join Lines Are And How They're Created"
For more information about Joins, click the Search button in Help and type:
Join
Additional query words: query subtract match unmatched
Keywords : kbinterop kbdta xlquery
Version : WINDOWS: 1.0, 2.0, 97
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: July 3, 1998