Reputation: 299
I have 2 distinct joins that I'm not sure how to put together in 1 query. Both queries pull correctly in that it pulls info from PROVIDERS
with the first joining PostalCodes
's county to city. The 2nd query joins only providers with 'general acute care hospital' from table Taxonomy
What is the proper way to correctly use both these joins in 1 query? Please let me know if I am missing any crucial information with my quesetion.
query 1 to join PostalCodes.County
SELECT PROVIDERS.ProviderID, PROVIDERS.NAME, PROVIDERS.CITY, PROVIDERS.STATE, PROVIDERS.ZIP, PostalCodes.County
FROM PostalCodes INNER JOIN
PROVIDERS ON PostalCodes.City = PROVIDERS.CITY
WHERE (1=1)
AND (PROVIDERS.STATE = 'AL')
query 2 to join Taxonomy.[Taxonomy Specialization]
SELECT PROVIDERS.ProviderID, PROVIDERS.NAME, PROVIDERS.CITY, PROVIDERS.STATE, PROVIDERS.ZIP, NPI.[Provider First Line Business Practice Location Address] as "ADDRESS"
FROM
Taxonomy INNER JOIN
NPI_Taxonomy ON Taxonomy.[Taxonomy Code] = NPI_Taxonomy.[Healthcare Provider Taxonomy Code]
RIGHT OUTER JOIN PROVIDERS ON NPI_Taxonomy.NPI = PROVIDERS.FACILITYID
right outer join npi on PROVIDERS.FACILITYID = NPI.NPI
WHERE (1=1)
AND (PROVIDERS.STATE = 'AL')
AND ([Taxonomy Specialization] like 'general acute care hospital')
Upvotes: 0
Views: 67
Reputation: 35343
WITH POSTALPROVIDERS AS
(SELECT PROVIDERS.ProviderID, PROVIDERS.NAME, PROVIDERS.CITY, PROVIDERS.STATE, PROVIDERS.ZIP, PostalCodes.County
FROM PostalCodes
INNER JOIN PROVIDERS
ON PostalCodes.City = PROVIDERS.CITY
WHERE (1=1)
AND (PROVIDERS.STATE = 'AL')),
TAXONOMY2 as
( SELECT PROVIDERS.ProviderID, PROVIDERS.NAME, PROVIDERS.CITY, PROVIDERS.STATE, PROVIDERS.ZIP, NPI.[Provider First Line Business Practice Location Address] as "ADDRESS"
FROM Taxonomy
INNER JOIN NPI_Taxonomy ON Taxonomy.[Taxonomy Code] = NPI_Taxonomy.[Healthcare Provider Taxonomy Code]
RIGHT OUTER JOIN PROVIDERS
ON NPI_Taxonomy.NPI = PROVIDERS.FACILITYID
RIGHT OUTER JOIN npi
on PROVIDERS.FACILITYID = NPI.NPI
WHERE 1=1)
AND (PROVIDERS.STATE = 'AL')
AND ([Taxonomy Specialization] like 'general acute care hospital'))
SELECT *
FROM POSTALPROVIDERS PP
INNER JOIN TAXONOMY2 T
ON PP.PROVIDERID = T.ProviderID
But if you must for performance reasons: this may do it.... setup a SQL Fiddle and I'll ensure they work.
SELECT p.ProviderID, P.NAME, P.CITY, P.STATE, P.ZIP, PC.County, NPI.[Provider First Line Business Practice Location Address] as "ADDRESS"
FROM PostalCodes PC
INNER JOIN PROVIDERS P
ON PC.City = P.CITY
LEFT JOIN NPI_Taxonomy NT
on NT.NPI = P.FacilityID
LEFT JOIN Taxonomy T
ON Taxonomy.[Taxonomy Code] = NPI_Taxonomy.[Healthcare Provider Taxonomy Code]
AND ([Taxonomy Specialization] like 'general acute care hospital'))
WHERE (1=1)
AND (P.STATE = 'AL')
We have to move the limiting criteria on taxonomy to the join criteria otherwise we will lose providers and postal codes when the join to NPI_Taxonomy doesn't exist.
Assumption here is you want all providers and postal codes in AL and any related taxonomy information that exists but keep all the provider and postal codes if no taxonomy information is found.
This is done by joining proviers to postal codes as both queries indicated. then left joining in the NPI_taxonomy and taxonomy. We have to move the where clause of the taxonomy to the join or lose the provider information.
Upvotes: 1