mysql的两表数据关联问题 本帖最后由 yunfan145 于 2010-06-27 10:07:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看得头晕,然后也没看明白。 建议你用些例子来讲解。 (不要高估你的汉语表达能力或者我的汉语理解能力) 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 给出你的show create table.给出你的测试记录的INSERT 语句。给出你的条件和需要得到的结果。 不好意思,两位,是有点乱我用的数据库是test,mysql的版本是5主表表结构:create table doc ( id char(19) not null, title varchar(200), fileno varchar(40), vers varchar(10), constraint PK_DOC primary key (id));子表表结构:create table gldoc ( id char(19) not null, docid char(19), fileno varchar(40), vers varchar(10), constraint PK_GLDOC primary key (id));alter table gldoc add constraint FK_GLDOC_REFERENCE_DOC foreign key (docid) references doc (id) on update restrict on delete restrict;子表通过docid与主表相关联。两个表中都有fileno(文件号)和vers(版本号)情况1:假如现在主表中有两条记录A记录:insert into doc values('0001','aaa','PHP','01')B记录:insert into doc values('0002','bbb','JAVA','01')操作:录入子表:先入主表:C记录:insert into doc values('0003','ccc','.NET','01')再录入子表:insert into gldoc values('z0001','0003','JAVA','01')录入子表后系统应该自动在gldoc表中增加一条记录 insert into gldoc values('z0002','0002','.NET','01')情况2:假如现在主表中有两条记录A记录:insert into doc values('0001','aaa','PHP','01')B记录:insert into doc values('0002','bbb','JAVA','01')B记录子表:insert into gldoc values('z0001','0002','.NET','01')操作:增加主表:C记录:insert into doc values('0003','ccc','.NET','01')录入主表后系统应该自动在gldoc表中增加一条记录 insert into gldoc values('z0002','0003','JAVA','01')情况3:即:主表-子表中记录 A-B,C,D B-E F-E 转为:主表-子表中记录 A-BCDEF B-ACDEF F-ABCDE 表中的id都是通过程序生成出来的。本人表达能力实在有限,请各位大侠谅解,谢谢 对应关系为两表中的fileno(文件号)和vers(版本号) 同样的数据,innodb表的要比myisam大不少? mysql explain 语法 求mysql语句(两个表,1对多) mysql怎么做到空值不更新? mysql操作出现中文乱码 请教几个与MySQL相关驱动有关的问题 like语句的问题 求助!!! mysql日期型加法如何做?? mysql两个表联合查询 求教:我的sql更新语句问题出在哪了 mysql 字符集之灵异事件 第一回~
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
给出你的测试记录的INSERT 语句。
给出你的条件和需要得到的结果。
我用的数据库是test,mysql的版本是5主表表结构:
create table doc
(
id char(19) not null,
title varchar(200),
fileno varchar(40),
vers varchar(10),
constraint PK_DOC primary key (id)
);
子表表结构:
create table gldoc
(
id char(19) not null,
docid char(19),
fileno varchar(40),
vers varchar(10),
constraint PK_GLDOC primary key (id)
);alter table gldoc
add constraint FK_GLDOC_REFERENCE_DOC foreign key (docid)
references doc (id)
on update restrict
on delete restrict;子表通过docid与主表相关联。两个表中都有fileno(文件号)和vers(版本号)情况1:
假如现在主表中有两条记录
A记录:insert into doc values('0001','aaa','PHP','01')
B记录:insert into doc values('0002','bbb','JAVA','01')操作:
录入子表:
先入主表:
C记录:insert into doc values('0003','ccc','.NET','01')
再录入子表:
insert into gldoc values('z0001','0003','JAVA','01')
录入子表后系统应该自动在gldoc表中增加一条记录 insert into gldoc values('z0002','0002','.NET','01')情况2:
假如现在主表中有两条记录
A记录:insert into doc values('0001','aaa','PHP','01')
B记录:insert into doc values('0002','bbb','JAVA','01')
B记录子表:insert into gldoc values('z0001','0002','.NET','01')操作:
增加主表:
C记录:insert into doc values('0003','ccc','.NET','01')
录入主表后系统应该自动在gldoc表中增加一条记录 insert into gldoc values('z0002','0003','JAVA','01')情况3:
即:
主表-子表中记录
A-B,C,D
B-E
F-E 转为:
主表-子表中记录
A-BCDEF
B-ACDEF
F-ABCDE
表中的id都是通过程序生成出来的。
本人表达能力实在有限,请各位大侠谅解,谢谢