SQL Syntax with Left Join with a Subquery?

BKennedy2008
BKennedy2008 used Ask the Experts™
on
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
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Kyle AbrahamsSenior .Net Developer

Commented:
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

Mike EghtebasDatabase and Application Developer

Commented:
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

Author

Commented:
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.
Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Database and Application Developer
Commented:
;With CTE
As
(
Select Rank() Over(Partition by G.UPCCode order By e.Scan_Date) As rnk
	             , R.Current_Location
				 , e.Filepath1 as JobNumber
				 , R.URICode
 	             , e.Scan_Date
	             , e.JobNumber  
from NewInventory R left join Scans e
On e.upccode = R.URICode
where R.URICode <='30126')
Select R.Current_Location
	, e.Filepath1 as JobNumber
	, R.URICode
 	, e.Scan_Date
	, e.JobNumber
From CTE
where rnk = 1
Order by CTE.Scan_Date desc, CTE.URICode

Open in new window


I have include just a few fields. After this works, then you can add the remaining fields you want.
awking00Information Technology Specialist

Commented:
Just need to modify eghtebas' solution to order by e.Scan_Date DESC

Author

Commented:
Thanks- I did a little mod from egtebas and it works. Thanlks Again!

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial