Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

SQL联合查询自动编号的问题

慧慧  发表于:2011-08-01 14:35:19  
复制

我做了一个联合查询,结果显示所有器件的供应商列表,

如何在结果的数据图结果中显示一个供应商ID的字段,且值为

自动编号。

烦请各位帮忙解答!

点击下载此附件

 

Top
都市侠影 发表于:2011-08-01 17:16:02

如此说明你的表有待改进,应当是先有供应商表,表中即含供应商ID和供应商名称,其他表含有供应商的字段就参照此表的供应商ID字段。你现在也可以补救,新建供应商表,要包含供应商ID和供应商名称,供应商ID设为自动编号,然后利用追加查询向此表插入记录,完了再修改其他表达供应商字段为供应商ID,实施参照完整性。



慧慧 发表于:2011-08-01 20:03:56

非常谢谢都市侠影老师的指点!

 

另外我还有两个问题请老师解答:

 

(1)利用追加查询向新表插入记录,可是我数据来源是很多个表,而且从很多个表查询到的结果是有重复值的。

 

     下面是追加查询的SQL语句

 

     INSERT INTO 供应商详细信息列表 ( 供应商, 供应商, 供应商 )
     SELECT DISTINCT Capacitor.Manufacturer, connector.Manufacturer, Inductor.Manufacturer
     FROM Capacitor, connector, Inductor;

    

     运行的时候会弹出对话框“输出目标供应商重复”

    

     怎么能避免重复呢?

 

(2) 如题,我做的这个联合查询,结果显示所有器件的供应商列表,为什么总是第一个记录是空白的呢?

 

      我试着将SQL语句改为:

     SELECT DISTINCT Manufacturer As [供应商]
     FROM Bead
     WHERE (Manufacturer IS NOT NULL)

 

     仍存在这种现象,该怎么解决?

    



都市侠影 发表于:2011-08-01 22:12:47

我这打不开你那个格式的文件,我的Access是2003版的

问题一:有两点,一是你那个供应商表我不知道你为什么弄了三个名称相同的字段,二是你那几个表没有给定连接条件,系统默认为笛卡尔连接,这种连接将第一个表的每一条记录与第二个表的每一条记录进行连接,即是说假定第一个表有10条记录,第二个表有20条记录,第三个表有30条记录,那么三个表的笛卡尔连接将含有10×20×30=6000条记录,这是你产生重复的原因。事实上这些表应该有相互关联的字段,比如供应商(供应商ID,供应商名称)划线部分是主键,采购单(采购单号,供应商ID,商品ID,数量,进货单价),商品(商品ID,商品名称,销售价格)采购单中的供应商ID字段就是参照供应商表主键的外键,而商品ID就是参照商品表主键的外键,如果要查询的话就应该写:

SELECT 供应商名称,商品名称,数量,进货价格 FROM 供应商,采购单,商品 WHERE 供应商.供应商ID=采购单.供应商ID AND 采购单.商品ID=商品.商品ID;

上面那个WHERE条件就是三个表连接的条件,不指定的话就成为笛卡尔连接。

问题二:我这打不开附件所以……

 



总记录:3篇  页次:1/1 9 1 :