Link to home
Start Free TrialLog in
Avatar of BKennedy2008
BKennedy2008

asked on

SQL Syntax with Left Join with a Subquery?

Can this be done (Left Join on a sub select query with a where? The Bold is stating that Multi-part identifier cannot be bound..Not sure how to re-write this to get the same results, other than below in my "Non-efficient way"

select R.URICode, briefdescription,
BillCode, model, ManName, SERIALNUMBER,HOMELOCATION, G1.Scan_Date,G1.Current_Location, G1.JobNumber
from NewInventory R
left outer join
(Select top 1 Scan_Date, Current_Location, Filepath1 as JobNumber, UPCCode from Scans e where e.upccode = R.URICode order by Scan_Date desc ) G1 on R.URICODE = G1.UPCCode
where R.URICode <='30126'
order by R.URICode asc


Non-Efficient Way:
select  b.URICode, briefdescription, BillCode, model, ManName, SERIALNUMBER,HOMELOCATION,
(select top 1 Scan_Date from Scans e where upccode =  b.uricode order by Scan_Date desc)as Last_Scan_Date,
 (select top 1 Current_Location from Scans e where upccode =  b.uricode order by Scan_Date desc)as Current_Location,
 (select top 1 FilePath1 as JobNumber from Scans e where upccode =  b.uricode order by Scan_Date desc)as JobNumber
 
from NewInventory  b
left join urijobs.dbo.jobs on (select top 1 FilePath1 as JobNumber from Scans e where upccode =  b.uricode order by Scan_Date desc) = urijobs.dbo.jobs.Job_Number
left join urijobs.dbo.Job_Status on urijobs.dbo.Job_Status.Status_ID = urijobs.dbo.jobs.[status]
where b.URICode <='30126'
order by b.URICode asc
Avatar of Kyle Abrahams, PMP
Kyle Abrahams, PMP
Flag of United States of America image

it's redundant.  The join is essentially you're where.

But there's also no need for the subquery:

 select R.URICode, briefdescription, 
 BillCode, model, ManName, SERIALNUMBER,HOMELOCATION,  e.Scan_Date, e.Current_Location, e.Filepath1 as JobNumber, e.UPCCode
 from NewInventory R
 left outer join  Scans e on R.URICODE = e.UPCCode
 where R.URICode <='30126'
 order by R.URICode asc, Scan_Date desc 

Open in new window

select R.URICode
     , briefdescription
	 , BillCode, model
	 , ManName
	 , SERIALNUMBER
	 , HOMELOCATION
	 , G1.Scan_Date
	 , G1.Current_Location
	 , G1.JobNumber
	 , e.Scan_Date
	 , e.Filepath1 as JobNumber
from NewInventory R left outer join Scans e
      On e.upccode = R.URICode 
	  where R.URICode <='30126'
	  order by e.Scan_Date desc, R.URICode

Open in new window

Avatar of BKennedy2008
BKennedy2008

ASKER

Sorry, I might add in that The Scans table contains multiple scans that day for column URICOde, and I need the latest scan in the scan_Date  for that day to be the selected.
ASKER CERTIFIED SOLUTION
Avatar of Mike Eghtebas
Mike Eghtebas
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Just need to modify eghtebas' solution to order by e.Scan_Date DESC
Thanks- I did a little mod from egtebas and it works. Thanlks Again!