Results 1 to 8 of 8
  1. #1
    Seamus59 is offline Advanced Beginner
    Windows 7 64bit Access 2007
    Join Date
    May 2013
    Posts
    34

    Question I only want the LAST child in a one-to many parent child relationship.

    Here's a puzzler! I've two tables in a one-to-many relationship, joined by ID=TranID. The child table has data that accumulates monthly. I've been asked to provide a report with the parent table and only the LAST entry (by date) of monthly data.



    I've got a few ideas, but none seem elegant. I'm sure someone else has probably done this, although I couldn't find anything when I searched the forum. If someone has a suggestion or idea, it would be awesome.

  2. #2
    Seamus59 is offline Advanced Beginner
    Windows 7 64bit Access 2007
    Join Date
    May 2013
    Posts
    34

    Here is my first stab. Elegant it ain't, but trying.

    This seems to grab the latest test data of any particular item (293 in this case) in the parent field:

    Code:
    SELECT TOP 1 [Transformer Test Data].TestDate, [Transformer Test Data].[Tran ID]
    FROM [Transformer Test Data]
    WHERE ((([Transformer Test Data].[Tran ID])=293))
    ORDER BY [Transformer Test Data].TestDate DESC;
    Now if I can figure out how to go through the entire parent table while selecting this in the child table.

  3. #3
    amrut is offline Expert
    Windows 7 64bit Access 2010 32bit
    Join Date
    Jun 2012
    Location
    Dubai
    Posts
    614
    You posted when I was replying to first post
    Try -
    Code:
    SELECT TOP 1 [Transformer Test Data].TestDate, [Transformer Test Data].[Tran ID]
    FROM [Transformer Test Data]
    ORDER BY [Transformer Test Data].TestDate DESC;
    You can use both master and child tables in query.

  4. #4
    Seamus59 is offline Advanced Beginner
    Windows 7 64bit Access 2007
    Join Date
    May 2013
    Posts
    34
    Thanks, yes. now do you know how to construct a query that uses that as one of it's citeria?


    and the overall query could look something like this:
    Code:
     SELECT [Transformer List].ID, [Transformer Test Data].[Tran ID], [Transformer Test Data].TestDate
    FROM [Transformer List] LEFT JOIN [Transformer Test Data] ON [Transformer List].ID = [Transformer Test Data].[Tran ID]
    AND [Transformer Test Data].[Tran ID] = (SELECT TOP 1 [Transformer Test Data].TestDate, [Transformer Test Data].[Tran ID]
    FROM [Transformer Test Data]
    WHERE ((([Transformer Test Data].[Tran ID])= [Transformer List].ID))
    ORDER BY [Transformer Test Data].TestDate DESC);
    unfortuanately, I don't have the syntax going in the right direction....Hmmmmm

  5. #5
    amrut is offline Expert
    Windows 7 64bit Access 2010 32bit
    Join Date
    Jun 2012
    Location
    Dubai
    Posts
    614
    does this works ?
    Code:
    SELECT TOP1 [Transformer List].ID, [Transformer Test Data].[Tran ID], [Transformer Test Data].TestDate
    FROM [Transformer List] LEFT JOIN [Transformer Test Data] ON [Transformer List].ID = [Transformer Test Data].[Tran ID]
    ORDER BY [Transformer Test Data].TestDate DESC;

  6. #6
    Seamus59 is offline Advanced Beginner
    Windows 7 64bit Access 2007
    Join Date
    May 2013
    Posts
    34
    It is a-l-m-o-s-t there, thanks, but it only returns all the parents whose dates equal the latest date, not the latest dates for each parent.....getting closer!
    Click image for larger version. 

Name:	Capture.JPG 
Views:	10 
Size:	16.7 KB 
ID:	15131

  7. #7
    amrut is offline Expert
    Windows 7 64bit Access 2010 32bit
    Join Date
    Jun 2012
    Location
    Dubai
    Posts
    614
    This should work
    Code:
    SELECT [Transformer List].ID, [Transformer Test Data].[Tran ID], Max([Transformer Test Data].TestDate) AS MaxOfTestDate FROM [Transformer List] 
    LEFT JOIN [Transformer Test Data] ON [Transformer List].ID = [Transformer Test Data].[Tran ID] 
    GROUP BY Transformer List.ID 
    ORDER BY [Transformer Test Data].TestDate;

  8. #8
    Seamus59 is offline Advanced Beginner
    Windows 7 64bit Access 2007
    Join Date
    May 2013
    Posts
    34
    I hadn't thought of using the MAX function, very good suggestion. With a slight modification it works. It only provides the Trans ID and latest date, so I save that query as MaxofTestDates, create an INNER JOIN between that and my original parent-child tables and Voila!!!

    Code:
    SELECT [Transformer Test Data].[Tran ID], [Transformer List].Equipment, [Transformer List].Description, [Transformer Test Data].TestDate, [Transformer Test Data].[VPM_Oil Temperature], [Transformer Test Data].[VPM_Oil Pressure]
    FROM MaxofTestDates INNER JOIN ([Transformer List] INNER JOIN [Transformer Test Data] ON [Transformer List].ID = [Transformer Test Data].[Tran ID]) ON (MaxofTestDates.[Tran ID] = [Transformer Test Data].[Tran ID]) AND (MaxofTestDates.MaxOfTestDate = [Transformer Test Data].TestDate);
    and MaxofTestDates was your previous query with a minor modification.

    Code:
    SELECT [Transformer Test Data].[Tran ID], Max([Transformer Test Data].TestDate) AS MaxOfTestDate
    FROM [Transformer List] LEFT JOIN [Transformer Test Data] ON [Transformer List].ID = [Transformer Test Data].[Tran ID]
    GROUP BY [Transformer Test Data].[Tran ID];
    Thanks!


    Looks wierd, but works!Click image for larger version. 

Name:	Capture.JPG 
Views:	9 
Size:	25.7 KB 
ID:	15133

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 3
    Last Post: 07-03-2013, 01:20 PM
  2. Parent Child Relationship
    By Guru86 in forum Database Design
    Replies: 1
    Last Post: 06-20-2013, 10:48 AM
  3. child references to parent
    By GraeagleBill in forum Programming
    Replies: 4
    Last Post: 04-10-2013, 02:25 PM
  4. Child/Parent relationship
    By ErnieS in forum Forms
    Replies: 1
    Last Post: 08-20-2010, 01:22 PM
  5. Calculation using Child and Parent
    By SamanthaSamuels in forum Reports
    Replies: 3
    Last Post: 08-17-2010, 11:07 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums