索引现有数据库的最快方法

时间:2014-07-14 13:50:03

标签: sql database ms-access normalization

我刚从现有会计程序中获得了excel表,包括我们公司的所有产品。 我立刻注意到了田野" HOOFDGROEP" (转换为"类别")和" SUBGROEP" (转换为"子类别")不包括主键,而是字符串值。 我将此表导入访问权限,但现在我要制作2个单独的表,"类别"和"子类别"。这样我可以索引数据库。我使用SQL查询来提取这样的组:

INSERT INTO Hoofdgroepen
SELECT DISTINCT HOOFDGROEP
FROM Artikelen

但现在我如何快速更换所有唱片' HOOFDGROEP'将字段转换为索引值而不手动或使用find / replace?

作为一个例子,我希望尽可能快地创建一个名为hoofdgroepen的表(通过上面的查询实现):

ID  HOOFDGROEP
3   Cat V
4   Contante betalingskorting
5   Diversen

出于此:

ID  §kop_artikel        A_ inv_ product     HOOFDGROEP   
238 80010077            Chappe              Cat V                                    
239 80010517            Beton per m3        Cat V                                    
240 9799044704539       Betalingskorting    Contante betalingskorting   
241 9799044704537       Viszak klein        Diversen        
242 9799044704538       Viszak middel       Diversen    

然后将该表格改为:

ID  §kop_artikel        A_ inv_ product     HOOFDGROEP   
238 80010077            Chappe              3                                    
239 80010517            Beton per m3        3                                    
240 9799044704539       Betalingskorting    4   
241 9799044704537       Viszak klein        5
242 9799044704538       Viszak middel       5

1 个答案:

答案 0 :(得分:1)

这样的事情:

Dim sSQL As String
Dim db As Database

Set db = CurrentDb

sSQL = "SELECT t.HOOFDGROEP INTO HOOFDGROUP " & _
"FROM aTable t " & _
"GROUP BY t.HOOFDGROEP;"

db.Execute sSQL, dbFailOnError

sSQL = "ALTER TABLE HOOFDGROUP ADD COLUMN ID AUTOINCREMENT"

db.Execute sSQL, dbFailOnError

sSQL = "SELECT t.ID, t.[§kop_artikel], t.[A_ inv_ product], HOOFDGROUP.ID INTO " & _
"aNewTable " & _
"FROM aTable t INNER JOIN HOOFDGROUP ON t.HOOFDGROEP = HOOFDGROUP.HOOFDGROEP;"

db.Execute sSQL, dbFailOnError

根据您的需要,您可能还需要:

 ALTER TABLE HOOFDGROUP ADD PRIMARY KEY(ID)
相关问题