我对SQL和数据库很陌生,但我的任务是创建几个表来保存信息。我在如何最好地处理这个问题上遇到了麻烦。
表A /* Populated by Flat csv file in SSMS-2016 */
Col1(name), Col2(ArrayX,cPK), Col3(ArrayY,cPK), Col4(subname)
/* two are required to identify a row. 1,000,000 rows */目标:--我想向每一行添加一个描述,而不需要无休止地重复一个文本块,其中可能有10,000个行需要相同的描述文本。
示例
**Table A**
Name, ArrayX, ArrayY, Subname
Red, 1, 1, Crayon
Red, 1, 2, Car
Red, 1, 3, Ball
Blue, 2, 1, Ball
Blue, 2, 2, Earth
**Table B**
Name(PK), Descriptions(Text)
Blue, "color, sky, azul, rainbow"
Red, "color, fire, hot, sun, rainbow"
Green, "(null value)"我希望最终用户能够搜索
Select *
From Table A
where Name like %color% AND Subname like %car%`
And SQL returns: `Red, car, "color, fire, hot, sun"`或
where Name like %rainbow%SQL返回:
name, subname, table2(descriptions)
Red, Crayon, "color, fire, hot, sun, rainbow"
Red, Car, "color, fire, hot, sun, rainbow"
Red, Ball, "color, fire, hot, sun, rainbow"
Blue, Ball "color, sky, azul, rainbow"
Blue, Earth "color, sky, azul, rainbow"重要的是,表all (Name)应该为所有值相同的项目键入说明,从而节省文本字段所需的重复和存储。
我猜一个复杂的视图会把我带到这里,但我也希望能够输入这样的描述
Update Table B /* this can be manual as the number of unique items for Table1 Col(Name) is low */
set Description = "color, fire, hot, sun, rainbow"
Name = red因此,在这一点上,我认为我被困在创建一个搜索或过程,可以让我加入上述。我知道我需要where table A Name = Table B Name,但我还没弄明白。
我要怎么做才有意义?我是否应该在第一个表上创建一个身份,作为一个PK链接到表B?如果我这么做了,我能自动填写表B(姓名)吗?
谢谢你走了这么远,用了一下伪码。我对数据库开发人员有了新的尊重!
发布于 2020-04-03 04:39:35
我建议你做以下几个步骤:
SELECT a.Name, a.ArrayX, a.ArrayY,a.SubName,b.Descriptions
FROM TableA AS a
INNER JOIN TableB AS b
ON a.Name = b.Name;https://stackoverflow.com/questions/61002337
复制相似问题