[AccessD] Isolating matching and related records

Mark A Matte markamatte at hotmail.com
Fri Jul 6 15:13:41 CDT 2007


Jim,

I went back and read my post since I didn't see a reference.  Apparently I 
didn't include the SQL.  Would a single delete statement with a subquery 
accomplish this?

************SQL**************
DELETE tblTest.Section, tblTest.code
FROM tblTest
WHERE (((tblTest.Section)="C1") AND ((tblTest.code) Not In (SELECT 
tblTest1.code
FROM tblTest AS tblTest1
GROUP BY tblTest1.Section, tblTest1.code
HAVING (((tblTest1.Section)="B1"));)));
************SQL**************


>From: Jim Lawrence <accessd at shaw.ca>
>Reply-To: Access Developers discussion and problem 
>solving<accessd at databaseadvisors.com>
>To: "'Access Developers discussion and problem 
>solving'"<accessd at databaseadvisors.com>
>Subject: Re: [AccessD] Isolating matching and related records
>Date: Fri, 06 Jul 2007 11:30:21 -0700
>
>Hi A.D. Tejpal:
>
>Your code looks very good but some adjustments would have to be made to 
>make
>it work in my particular context. I worked backwards, first in MS SQL where
>SubQueries are available and then translated the result into Access's
>compound query system. Below is the result for the record:
>
>First one record of each match group is created in queries 1 and 2. Then 
>any
>missing matches are isolated in query 3 and query 4 deletes those matches. 
>I
>am sure this code could be greatly refined but the results were needed 
>fast.
>
>query1:
>SELECT DISTINCT tblRosterReportTemplate.SectionCode,
>tblRosterReportTemplate.JobCode
>FROM tblRosterReportTemplate
>WHERE (tblRosterReportTemplate.SectionCode="C1")
>
>query2:
>SELECT DISTINCT tblRosterReportTemplate.SectionCode,
>tblRosterReportTemplate.JobCode
>FROM tblRosterReportTemplate
>WHERE (tblRosterReportTemplate.SectionCode="B1")
>
>query3:
>SELECT query1.SectionCode, query1.JobCode
>FROM query1 LEFT JOIN query2
>ON query1.JobCode = query2.JobCode
>WHERE query2.SectionCode Is Null;
>
>query4:
>DELETE * FROM tblRosterReportTemplate
>WHERE SectionCode = query3.SectionCode'
>AND JobCode = query3.JobCode;
>
>Thank you so much for your help
>
>Jim
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of A.D.TEJPAL
>Sent: Friday, July 06, 2007 12:51 AM
>To: Access Developers discussion and problem solving
>Subject: Re: [AccessD] Isolating matching and related records
>
>Jim,
>
>     Delete query as given below, should get you the desired results.
>
>Best wishes,
>A.D.Tejpal
>---------------
>
>========================================
>DELETE *
>FROM T_Codes
>WHERE IIf([Section]="C1",IIf([Code] In (SELECT Code  FROM T_Codes As T1
>WHERE T1.Section = "B1"),0,1),0) > 0;
>========================================
>
>   ----- Original Message -----
>   From: Jim Lawrence
>   To: 'Access Developers discussion and problem solving'
>   Sent: Friday, July 06, 2007 08:28
>   Subject: [AccessD] Isolating matching and related records
>
>
>   Hi All:
>
>   The following question seems like a simple SQL question but I just can 
>not
>find the appropriate answer at this minute... too many long nights.
>
>   Given:
>
>   1. A table of many records, with each record having a couple fields 
>called
>{section] and [code].
>
>   2. The content of field [section] has only three possible entries of
>   "A1","B1" and "C1". The contents of field [code] can be any of a variety
>of codes.
>
>   3. There will always be records for group "A1" and "C1" but not always 
>for
>"B1"
>
>   What SQL code would find the group where there are no matching "B1"
>records and delete all the records in the "C1" group
>
>   An example of data could be;
>
>   5 records of [section] = "A1", [code] = "TTR"
>   4 records of [section] = "B1", [code] = "TTR"
>   30 records of [section] = "C1", [code] = "TTR"
>   3 records of [section] = "A1", [code] = "CYR"
>   47 records of [section] = "C1", [code] = "CYR"
>   5 records of [section] = "A1", [code] = "PIJ"
>   4 records of [section] = "B1", [code] = "PIJ"
>   30 records of [section] = "C1", [code] = "PIJ"
>
>   After the SQL code was run all 47 records with [section] = "C1' and 
>[code]
>= "CYR" would be gone.
>
>   It does not seem like a difficult process but...
>
>   MTIA
>
>   Jim
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com

_________________________________________________________________
http://liveearth.msn.com




More information about the AccessD mailing list