Sql 索引现有数据库的最快方法
我刚从我们现有的会计程序中得到一个excel表格,包括我们公司的所有产品。 我立即注意到字段“HOOFDGROEP”(翻译成“Category”)和“SUBGROEP”(翻译成“Subcategory”)不包括主键,而是字符串值。 我将此表导入access,但现在我想创建两个单独的表,“类别”和“子类别”。这样我就可以为数据库编制索引。我使用SQL查询提取组,如下所示:Sql 索引现有数据库的最快方法,sql,database,ms-access,normalization,Sql,Database,Ms Access,Normalization,我刚从我们现有的会计程序中得到一个excel表格,包括我们公司的所有产品。 我立即注意到字段“HOOFDGROEP”(翻译成“Category”)和“SUBGROEP”(翻译成“Subcategory”)不包括主键,而是字符串值。 我将此表导入access,但现在我想创建两个单独的表,“类别”和“子类别”。这样我就可以为数据库编制索引。我使用SQL查询提取组,如下所示: INSERT INTO Hoofdgroepen SELECT DISTINCT HOOFDGROEP FROM Artike
INSERT INTO Hoofdgroepen
SELECT DISTINCT HOOFDGROEP
FROM Artikelen
但是现在,我如何快速地将所有记录的“HOOFDGROEP”字段替换为其索引值,而无需手动或使用find/replace
例如,我希望尽快创建一个名为hoofdgroepen的表,如下所示(通过上述查询实现):
其中:
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
大概是这样的:
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)
“我[…]注意到字段[…]不包含主键,但包含字符串值”-没有任何意义。主键也可以是字符串值。那么我以为我学到的关于主键的知识是错误的,我想实现这一点,例如类别“materials”,得到一个索引:1,因此“materials”不会出现数千次,如果您仍然无法实现您的目标,请返回。请发布一个小数据示例,并说明您希望它是什么。在MS Access中创建新字段/列通常非常容易。我猜你想要的是类似于
选择不同的材料,其中Mid(SomeField,3,4)=“something”)
编辑了一个问题,期望的结果是什么这是什么语言?我在哪里使用它?当我尝试单独使用sql查询时,除了最后一个(不是主键)之外,所有的查询都正常工作,这给了我一个错误:结果表不允许有多个自动编号fieldCLng(HOOFDGROEP.ID),因为HOOFDGROEPID修复了这个问题,谢谢!
ALTER TABLE HOOFDGROUP ADD PRIMARY KEY(ID)