Access Inner Join Query and Most recent date - Part 2

Hello,

My question is following up my previous question (Access Inner Join Query and Most recent date) which mbizup helped me solved.

SELECT u.[Update], u.[some Other field], q2.*
FROM tblitemUpdates u
INNER JOIN
(SELECT tblItem.*, q.MaxOfDateofUpdate
FROM tblItem INNER JOIN
(SELECT tblitemUpdates.ItemID, MAX(tblitemUpdates.DateOfUpdate) AS MaxOfDateofUpdate FROM tblitemUpdates GROUP BY tblitemUpdates.ItemID) q
ON q.ItemID = tblItem.ItemID
WHERE tblitem.itemtatus2 =[Forms]![item Status Reports]![Combo28]) q2
ON u.ItemID = q2.ItemID  AND u.DateOfUpdate = q2.MaxOfDateofUpdate
ORDER BY q2.BusinessChannel, q2.itemCategory;

I need to get updates for all items in the tblItems even if the field is blank. Whith the above query I get a list of items and the corresponding update.
I need to get the list of items even if there are no updates.

I've played around by changing the first joint but I only see part of the items list not all items.

Can anybody help please?

Thanks
dnt2009Asked:
Who is Participating?
 
als315Connect With a Mentor Commented:
Look at sample. There are 2 variants:
1. 2 sequental queries (may work faster with big tables)- qry_LastUpdate2 and qry_Show_All_with_Updates
2. Nested query - qry_Show_All_with_Updates_nestedQuery
Results are same
SampleDatabase.mdb
0
 
als315Commented:
If you like to see all records from one table/query and only matching from other, you should use Left Join (or Right Join) instead of Inner Join:
http://office.microsoft.com/en-us/access-help/left-join-right-join-operations-HP001032251.aspx
Try to change first INNER JOIN to LEFT JOIN
0
 
dnt2009Author Commented:
If I change the first INNER JOIN to LEFT - I get all the updates for every item. I would like to get the most recent update - even if empty for all items.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
John_VidmarCommented:
I agree with using an outer-join (such as left or right, I favor left-join):
SELECT	whatever
FROM	tblItem		i
LEFT
JOIN	(	SELECT	ItemID
	,		MAX(DateOfUpdate) AS MaxOfDateofUpdate
		FROM	tblitemUpdates
		GROUP
		BY	ItemID
	)		q	ON	i.ItemID = q.ItemID
LEFT
JOIN	tblitemUpdates	u	ON	q.ItemID = u.ItemID
				AND	q.MaxOfDateofUpdate = u.DateOfUpdate
WHERE	i.itemtatus2 =[Forms]![item Status Reports]![Combo28]
ORDER
BY	something

Open in new window

0
 
als315Commented:
MAy be you can upload some sample DB with dummy records for testing?
0
 
dnt2009Author Commented:
Please find attached sample database.

thanks for your help.

@John_vidmar - i get a syntax error.

Thanks
SampleDatabase.mdb
0
 
dnt2009Author Commented:
thank you als315. I used the nested query and it works perfectly.

Many thanks for your help.

dnt
0
All Courses

From novice to tech pro — start learning today.