Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.3K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 544 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.5K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 439 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
how to check if the contact is filled in correctly with right or left join

We want to create a report to check that the correct contact is entered what with the relevant service provider but don't know how to go about this, would love your help with this.
We are using 3 tables for this purpose: SHIPMENT, SHIPMENT_INVOLVED_PARTY, CONTACT
The shipment table has the following fields:
SHIPMENT_GID, SERVPROV_GID
Example data:
123, 1
1234, 2
1245, 1
The SHIPMENT_INVOLVED_PARY table has the following fields:
SHIPMENT_GID, INVOLVED_PARTY_QUAL_GID, INVOLVED_PARTY_CONTACT_GID
Example data:
123, CARRIER-OPS, AAA
1234, CARRIER-OPS, BBB
1245, CARRIER-OPS BBB
the CONTACT table has the following fields:
CONTACT_GID, LOCATION_GID
Example data:
AAA, 123
abc, 123
abcc, 123
BBB, 1234
BB1, 1234
BB2, 1234
CCC, 1245
Based on the data in the database we can see that at shipment 1245 the wrong contact is filled in, contact BBB belongs to service provider 1234 and is filled in at a shipment with service provider 1245
The setup we have created is as follows:
SELECT
S.SHIPMENT_GID,
SIP.INVOLVED_PARTY_QUAL_GID,
SIP.INVOLVED_PARTY_CONTACT_GID
FROM
SHIPMENT S,
SHIPMENT_INVOLVED_PARTY SIP
WHERE
S.SHIPMENT_GID = SIP.SHIPMENT_GID
AND SIP.INVOLVED_PARTY_QUAL_GID = 'RSK.CARRIER-OPS'
to this we need to add the check whether the value of SIP.INVOLVED_PARTY_CONTACT_GID corresponds to the value from the table Contact
To connect the table shipment with contact: servprov_gid = location_gid
Best Answer
-
SELECT S.SHIPMENT_GID, SIP.INVOLVED_PARTY_QUAL_GID, SIP.INVOLVED_PARTY_CONTACT_GID FROM SHIPMENT S, SHIPMENT_INVOLVED_PARTY SIP, CONTACT C WHERE S.SHIPMENT_GID = SIP.SHIPMENT_GID AND SIP.INVOLVED_PARTY_QUAL_GID = 'CARRIER-OPS' AND S.SHIPMENT_GID = C.LOCATION_GID(+) AND SIP.INVOLVED_PARTY_CONTACT_GID = C.CONTACT_GID(+) AND C.CONTACT_GID IS NULL /
SY.
Answers
-
S.SHIPMENT_GID = SIP.SHIPMENT_GID
AND SIP.INVOLVED_PARTY_QUAL_GID = 'RSK.CARRIER-OPS'
--------------------
Added the join condition.
and SIP.INVOLVED_PARTY_CONTACT_GID = CONTACT.CONTACT_GID
-------------------
-
this does not help us, because it does not check whether the correct contact has been entered. the contact must be linked to the service provider.
So we want to see all the shipments where the contact does not match the service provider. (all incorrectly entered contacts at the table SHIPMENT_INVOLVED_PARTY)
-
SELECT S.SHIPMENT_GID, SIP.INVOLVED_PARTY_QUAL_GID, SIP.INVOLVED_PARTY_CONTACT_GID, NVL2(C.CONTACT_GID,'Existing INVOLVED_PARTY_CONTACT_GID','Non-existing INVOLVED_PARTY_CONTACT_GID') FLAG FROM SHIPMENT S, SHIPMENT_INVOLVED_PARTY SIP, CONTACT C WHERE S.SHIPMENT_GID = SIP.SHIPMENT_GID AND SIP.INVOLVED_PARTY_QUAL_GID = 'CARRIER-OPS' AND S.SHIPMENT_GID = C.LOCATION_GID(+) AND SIP.INVOLVED_PARTY_CONTACT_GID = C.CONTACT_GID(+) /
SY.
-
This is already a very good solution, thanks in advance!!!
But how can we see only the values that are not correct (Non-existing INVOLVED_PARTY_CONTACT_GID)? now we see them both?
Thanks in advance for the answer.
-
SELECT S.SHIPMENT_GID, SIP.INVOLVED_PARTY_QUAL_GID, SIP.INVOLVED_PARTY_CONTACT_GID FROM SHIPMENT S, SHIPMENT_INVOLVED_PARTY SIP, CONTACT C WHERE S.SHIPMENT_GID = SIP.SHIPMENT_GID AND SIP.INVOLVED_PARTY_QUAL_GID = 'CARRIER-OPS' AND S.SHIPMENT_GID = C.LOCATION_GID(+) AND SIP.INVOLVED_PARTY_CONTACT_GID = C.CONTACT_GID(+) AND C.CONTACT_GID IS NULL /
SY.
-
Thankyou very much for the help @Solomon Yakobson !!!