gfranco
asked on
Extract unmatched records from Access
Hi,
I have two tables with this structure
tblSOM
=======
ID Contract Cliente Region
1 765 A R1
1 1567 D R1
2 766 B R2
3 777 C R3
4 888 D R4
5 9999 E R5
tblContracts
========
ID Contract Cliente Region
1 765 A R1
1 1567 D R1
1 99990 Z R2
2 11 A R3
2 766 B R2
3 777 C R3
3 23234 18 R2
4 888 D R4
5 999901 E R5
So, I would like to get the all contracts that not exits on the table tblContracts
The match criteria is the ID
For example on this 2 tables my final result would be the list of the contract that not in on table tblSOM
qryFinal
ID Contract Cliente Region
1 99990 Z R2
2 11 A R3
3 23234 18 R2
4 888 D R4
5 999901 E R5
I have two tables with this structure
tblSOM
=======
ID Contract Cliente Region
1 765 A R1
1 1567 D R1
2 766 B R2
3 777 C R3
4 888 D R4
5 9999 E R5
tblContracts
========
ID Contract Cliente Region
1 765 A R1
1 1567 D R1
1 99990 Z R2
2 11 A R3
2 766 B R2
3 777 C R3
3 23234 18 R2
4 888 D R4
5 999901 E R5
So, I would like to get the all contracts that not exits on the table tblContracts
The match criteria is the ID
For example on this 2 tables my final result would be the list of the contract that not in on table tblSOM
qryFinal
ID Contract Cliente Region
1 99990 Z R2
2 11 A R3
3 23234 18 R2
4 888 D R4
5 999901 E R5
Sorry,
select * from tblContract
left join tblSOM on tblContract.ID = tblSOM.ID
where tblSOM.ID is null
select * from tblContract
left join tblSOM on tblContract.ID = tblSOM.ID
where tblSOM.ID is null
you can try this.
SELECT *
FROM tblSOM
WHERE tblSOM.[Contract] NOT EXISTS (SELECT 1 FROM tblContract WHERE tblSOM.[Contract] = tblContract.[Contract])
typo in last post. try this.
SELECT *
FROM tblSOM
WHERE NOT EXISTS (SELECT 1 FROM tblContract WHERE tblSOM.[Contract] = tblContract.[Contract])
ASKER
Why 1 on this select? (SELECT 1 FROM tblContract WHERE tblSOM.[Contract] = tblContract.[Contract])
I don't think there is a need to create a subquery. Have you tried mine?
This query will produce what you are expecting for: "final result would be the list of the contract that not in on table tblSOM"
select * from tblContract
left join tblSOM on tblContract.ID = tblSOM.ID
where tblSOM.ID is null
This query will produce what you are expecting for: "final result would be the list of the contract that not in on table tblSOM"
select * from tblContract
left join tblSOM on tblContract.ID = tblSOM.ID
where tblSOM.ID is null
ASKER
But you know what
It could be something like this
1 ID will be related to 1 or many contracts
But 1 contract is only be related to 1 ID.
I hope this clarify any doubts.
It could be something like this
1 ID will be related to 1 or many contracts
But 1 contract is only be related to 1 ID.
I hope this clarify any doubts.
Both ralmada and my queries will give you the expected result. The 1 in the SELECT clause is nothing but I am ticking the matching record. By using NOT EXISTS, I am selecting unmatched (unticked) records.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
This is the resutl that i was looking for.
Thanks.
Thanks.
SELECT tblSomContracts.ContractNumber, tblSomContracts.[Service Level], tblSomContracts.[End Customer], tblSomContracts.[BID to partner], tblSomContracts.Partner, tblSomContracts.Region INTO tbl
FROM tblSomContracts LEFT JOIN StrategicAccounts ON tblSomContracts.ContractNumber = StrategicAccounts.Contract
WHERE (((tblSomContracts.[BID to partner]) In (Select distinct BillToPartner from StrategicAccounts)) AND ((StrategicAccounts.Contract) Is Null));
SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
select * from tblContract
left join tblSOM on tblContract.ID = tblSOM.ID
where tblContract.ID is null