现有表A,表B,表C,还有code表
A表和B表都有id做为主键,C表为A表和B表的关联表,每个A的id和B的id再根据code表中某一个code对应的值(可以为多个)对应一条数据
要求最终结果为A表中的所有数据同时包括code表相应code所对应的值所对应的数据
也就是说code表中的某code所对应的值在查询结果中是个字段名,其对应的数据是对应C表中的数据
先谢谢大家了
A表和B表都有id做为主键,C表为A表和B表的关联表,每个A的id和B的id再根据code表中某一个code对应的值(可以为多个)对应一条数据
要求最终结果为A表中的所有数据同时包括code表相应code所对应的值所对应的数据
也就是说code表中的某code所对应的值在查询结果中是个字段名,其对应的数据是对应C表中的数据
先谢谢大家了
解决方案 »
- 疑难杂症啊 , 2003 connot connect to ...10061
- 跪求大神指导 ERROR 1064 (42000)
- MySql求一语句
- 有什么方法可以让select email from user group by email having count(*)>1 区分大小写
- 关于mysql for windows的备份问题
- postgresql如何设置类似MYSQL的自增属性auto_increment??
- 由于用了左连接!执行速度很慢!有什么解决办法吗?
- 应该是挺基础的2个问题,在线等,给分100,谢谢!
- 两个对应的表添加数据问题
- "tomcat+mysql+jive+win2000"为何无法正确显示“汉字”,希望各位多帮忙!!!
- EXCEL导出表头数据
- 隐藏数据ip 地址方案 可行性??????????
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
code表
CREATE TABLE `code` (
`CD_NUMBER` varchar(10) NOT NULL DEFAULT '' ,
`PRO_ID` char(10) NOT NULL DEFAULT '0' ,
`CD_VALUE` varchar(10) NOT NULL DEFAULT '' ,
`CD_NAME` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`CD_NUMBER`,`PRO_ID`,`CD_VALUE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `code` (`CD_NUMBER`, `PRO_ID`, `CD_VALUE`, `CD_NAME`) values('SIK000001','10100001','1','WINDOWS');
insert into `code` (`CD_NUMBER`, `PRO_ID`, `CD_VALUE`, `CD_NAME`) values('SIK000001','10100001','2','LINUX');
insert into `code` (`CD_NUMBER`, `PRO_ID`, `CD_VALUE`, `CD_NAME`) values('SIK000001','10100001','3','MAC');C表
CREATE TABLE `si_peibu_link` (
`SI_NUMBER` int(11) NOT NULL ,
`CD_NUMBER` char(10) NOT NULL,
`CHECK_FLG` char(1) DEFAULT NULL ,
`PEIBU_DATE` date DEFAULT NULL ,
`SHIJI_PEIBU_DATE` date DEFAULT NULL ,
PRIMARY KEY (`SI_NUMBER`,`SHIJI_PEIBU_DATE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;B表
CREATE TABLE `si_lib_link` (
`KEY_NUMBER` int(11) NOT NULL ,
`LIB_NUMBER` int(11) NOT NULL,
`SI_NUMBER` int(11) NOT NULL ,
`PRO_ID` varchar(10) NOT NULL ,
PRIMARY KEY (`KEY_NUMBER`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;A表
CREATE TABLE `si_lib_hao` (
`LIB_NUMBER` int(11) NOT NULL ,
`MASTER_NUMBER` int(11) DEFAULT NULL ,
`PRO_ID` varchar(10) NOT NULL ,
`LIB_JTI` varchar(10) DEFAULT NULL ,
`REVISIION_VERSION` varchar(10) DEFAULT NULL ,
PRIMARY KEY (`LIB_NUMBER`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
查询结果为:
LIB_NUMBER MASTER_NUMBER PRO_ID LIB_JTI REVISIION_VERSION WINDOWS LINUX MAC
10100001 10100001 10100001 3 3123 12/1 12/2 12/3
也就是根据A表的LIB_NUMBER查到B表的SI_NUMBER,再根据SI_NUMBER和CD_NUMBER查到相应日期
我的mysql版本是5.1,结构已经贴出来了,先谢谢啦!