Mitsules, Mark S. (Newport News)
Mark.Mitsules at ngc.com
Wed Apr 21 08:58:37 CDT 2004
Although it seemed, at first, rather complicated, the union query worked great. My only thought was I wish there was a simpler way to turn a union query into a Make-Table query:( But we can't have everything, can we? Mark -----Original Message----- From: Gustav Brock [mailto:gustav at cactus.dk] Sent: Wednesday, April 21, 2004 5:16 AM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Create Junction Table From Existing Data Hi Mark I would go with the union query as well. The ID can be added by a function like this: <code> Public Function SequentialID( _ ByVal booReset As Boolean, _ Optional ByVal varDummy, _ Optional ByVal intIncrement As Integer = 1, _ Optional ByVal lngInitialID As Long) As Long ' Increments static variable lngCurrentID with intIncrement. ' Returns the new value of lngCurrentID. ' Parameter varDummy is used to force repeated calls of ' this function when used in a query. ' ' Reset to start counting from zero incrementing by one: ' Call SequentialID(True) ' Reset to start counting from 1000: ' Call SequentialID(True, Null, 1, 1000) ' Reset to start counting from zero incrementing by 2: ' Call SequentialID(True, Null, 2) ' Reset to start counting from -2000 incrementing by -8 ' and returning initial ID: ' lngID = SequentialID(True, Null, -8, -2000) ' ' Retrieve the current ID: ' lngID = SequentialID(False) ' Do a count by one and retrieve the current ID: ' lngID = SequentialID(False, Null, 1) ' Do a count by one in a query and retrieve the current ID: ' lngID = SequentialID(False, [fldAnyField], 1) ' Do a count by minus two and retrieve the current ID: ' lngID = SequentialID(False, varAny, -2) ' ' 2001-12-13. Cactus Data ApS, CPH. Static lngCurrentID As Long Dim intSgn As Integer If booReset = True Then ' Reset ID. lngCurrentID = lngInitialID ElseIf Not intIncrement = 0 Then intSgn = Sgn(intIncrement) If intSgn * lngCurrentID < intSgn * lngInitialID Then ' Reset ID. lngCurrentID = lngInitialID Else ' Increment ID. lngCurrentID = lngCurrentID + intIncrement End If End If SequentialID = lngCurrentID End Function </code> Have fun! /gustav > How about something like: > SELECT CODE, SA > FROM T1 > WHERE SA NOT IS NULL > UNION > SELECT CODE, SAR > FROM T1 > WHERE SAR NOT IS NULL > UNION > SELECT CODE, SRD > FROM T1 > WHERE SRD NOT IS NULL; > Then you only need to get your PK right > If you really wnat the numbering as indicated you could pass the above query > to a table with a PK as autonumber > There must be a way to do this in the query, I have seen it somewhere, but > where? > Regards > Harry >>-----Original Message----- >>From: accessd-bounces at databaseadvisors.com >>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of >>Mitsules, Mark S. (Newport News) >>Sent: Tuesday, April 20, 2004 10:08 PM >>To: 'Access Developers discussion and problem solving' >>Subject: RE: [AccessD] Create Junction Table From Existing Data >> >> >>I did just that to create the primary tables. But, since I've >>never had to >>do this on such a grand scale, I need assistance in generating >>the junction >>table. Here is pseudo data for clarification. I've placed dashes to >>maintain alignment. >> >>ID--CODE--SA--SAR--SRD >>1---EA1---SA--SAR--SRD >>2---EEY1--SA >>3---EEY2--SA--SAR--SRD >> >>...from the data above, I need: >>PK--CODE--TYPE >>1---EA1---SA >>2---EA1---SAR >>3---EA1---SRD >>4---EEY1--SA >>5---EEY2--SA >>6---EEY2--SAR >>7---EEY2--SRD >> >>Any suggestions? >> >>Mark >> >> >> >>> Is there a method to create a junction table from a non-normalized table? >>> I inherited a table that I now need to normalize into two primary tables and >>> a joining junction table. The primary tables were easy enough to create, >>> but how can I create the junction table? >>> >>> I want to take a records such as: >>> Fld1 Fld2 Fld3 Fld4 Fld5 <=Fields >>> Dat1 Fld2 Fld4 Fld5 <=Record >>> Dat2 Fld3 Fld4 <=Record >>> >>> And turn it into: >>> Fld1 FldID <=Fields >>> Dat1 Fld2 <=Record >>> Dat1 Fld4 <=Record >>> Dat1 Fld5 <=Record >>> Dat2 Fld3 <=Record >>> Dat2 Fld4 <=Record -- _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com