求教大伙儿一个材料表整体规划的难题,有一情景:
一笔材料增加到到达站材料表(@Target)以前,要先查验序号(no)是不是已存有,
沒有就立即增加,有就分辨欲插进的Value是不是与已存有的Value同一组;
而分辨Value是不是一个组是否要用参照Table(@RefTable)来纪录是不是属於同一组?
像英语的语法中的@RefTable ([Value] char(1), [Group] char(1))那样?
或是说有更合适的作法?
MSSQL英语的语法以下:
--要插进的到达站Table
DECLARE @Target TABLE ([no] char(3), [Value] char(1))
INSERT INTO @Target ([no], [Value]) SELECT '101','A'
INSERT INTO @Target ([no], [Value]) SELECT '102','B'
INSERT INTO @Target ([no], [Value]) SELECT '103','D'
INSERT INTO @Target ([no], [Value]) SELECT '104','F'
INSERT INTO @Target ([no], [Value]) SELECT '105','G'
INSERT INTO @Target ([no], [Value]) SELECT '106','J'
SELECT * FROM @Target
--欲插进的data
SELECT '107','A' --@Target沒有107 => 可插进
SELECT '101','C' --@Target有101,但C与A是同一个Group => 不能插进
SELECT '102','C' --@Target有102,且C与B是不一样Group => 可插进
--排序参照的Table
DECLARE @RefTable TABLE ([Value] char(1), [Group] char(1))
INSERT INTO @RefTable ([Value],[Group]) SELECT 'A', '1'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'B', '2'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'C', '1'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'D', '2'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'E', '3'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'F', '3'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'G', '4'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'H', '2'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'I', '4'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'J', '4'
INSERT INTO @RefTable ([Value],[Group]) SELECT 'K', '1'
SELECT * FROM @RefTable
我能有疑问的地区是预估的@RefTable大约会出现3六千多笔,那样去归类(Group)序号,是否会编到最後自身乱掉? |