第一个表student(id,bedcost,bedid)
第二个表bed(bedid,flatid)
第三个表flat(flatid,cost) 把第二个表里的bedid和第三个表里的cost分别加入到student表里的bedid、bedcost字段。 先把bedid插入到student里,
然后在根据 bedid查找到flat.cost ,将其放入student里的bedcost里。呵呵
条件 where id=1111111 and bedid=2222222;
我对数据库太过敏了。谢谢大家
第二个表bed(bedid,flatid)
第三个表flat(flatid,cost) 把第二个表里的bedid和第三个表里的cost分别加入到student表里的bedid、bedcost字段。 先把bedid插入到student里,
然后在根据 bedid查找到flat.cost ,将其放入student里的bedcost里。呵呵
条件 where id=1111111 and bedid=2222222;
我对数据库太过敏了。谢谢大家
select cost,bedid
from bed,flat
where bed.flatid=flat.flatid建议你能你的数据贴出来,说实话,你描述得并不清楚。
bed
bedid,flatid
1 2
2 7
1 4flat
flatid,cost
2 30
4 30然后结果是什么?
我把表结构贴出来吧。我都不知道要怎么弄
flag表
student
bed
我就是要把bed里的BEDID
和flag理的cost
放到student里的bedid、和bedcost里面。呵呵
-- ----------------------------
-- Table structure for bed
-- ----------------------------
DROP TABLE IF EXISTS `bed`;
CREATE TABLE `bed` (
`bedid` int(11) NOT NULL,
`flatid` int(11) NOT NULL,
`classid` int(11) DEFAULT NULL,
`arrange` varchar(10) DEFAULT NULL,
PRIMARY KEY (`bedid`),
KEY `flatid` (`flatid`),
CONSTRAINT `flatid` FOREIGN KEY (`flatid`) REFERENCES `flat` (`flatid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
-- ----------------------------
-- Table structure for flat
-- ----------------------------
DROP TABLE IF EXISTS `flat`;
CREATE TABLE `flat` (
`flatid` int(11) NOT NULL,
`borg` varchar(10) NOT NULL,
`cost` int(11) NOT NULL,
PRIMARY KEY (`flatid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(50) NOT NULL,
`name` varchar(50) NOT NULL,
`sex` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
`phone` varchar(50) DEFAULT NULL,
`bedid` int(50) DEFAULT '0',
`bedcost` int(11) DEFAULT NULL,
`registered` varchar(10) DEFAULT NULL,
`spending` int(11) DEFAULT NULL,
`spent` int(11) DEFAULT '0',
`classid` int(11) DEFAULT NULL,
`userid` int(11) DEFAULT NULL,
`date` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `bedid` (`bedid`),
KEY `userid` (`userid`),
KEY `classid` (`classid`),
CONSTRAINT `bedid` FOREIGN KEY (`bedid`) REFERENCES `bed` (`bedid`),
CONSTRAINT `classid` FOREIGN KEY (`classid`) REFERENCES `class` (`classid`),
CONSTRAINT `userid` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
INSERT INTO `bed` VALUES ('0', '1', '10101', '');
INSERT INTO `bed` VALUES ('1', '2', '10101', 'Y');
INSERT INTO `bed` VALUES ('2', '1', '30201', 'Y');
INSERT INTO `bed` VALUES ('3', '2', '30201', 'Y');
INSERT INTO `bed` VALUES ('4', '4', '30201', 'Y');
INSERT INTO `bed` VALUES ('33', '2', '30202', 'Y');
INSERT INTO `bed` VALUES ('44', '3', '10202', 'N');
INSERT INTO `bed` VALUES ('234', '0', '30202', 'N');
INSERT INTO `flat` VALUES ('0', 'null', '0');
INSERT INTO `flat` VALUES ('1', '男', '1111');
INSERT INTO `flat` VALUES ('2', '女', '2222');
INSERT INTO `flat` VALUES ('3', '男', '3333');
INSERT INTO `flat` VALUES ('4', '女', '4444');INSERT INTO `student` VALUES ('91010101', '丁乙甲', '男', '21', '通化', '13900000000', '0', null, 'N', '2000', '3111', '10101', null, '2009');
INSERT INTO `student` VALUES ('91010102', '索春龙', '男', '22', '安徽', '13910000000', '0', null, 'N', '2000', '3311', '10101', null, '2009');
INSERT INTO `student` VALUES ('91010103', '刘莉莉', '女', '22', '白城', '13920000000', '0', null, 'N', '2000', '0', '10101', null, '2009');
INSERT INTO `student` VALUES ('91010104', '隋鑫', '女', '22', '松原', '13930000000', '1', null, 'N', '2000', '0', '10101', null, '2009');
INSERT INTO `student` VALUES ('91010201', '河江山', '男', '20', '陕西', '13800000000', '22223', null, 'Y', '2000', '3111', '10102', null, '2009');
INSERT INTO `student` VALUES ('91010202', '祝立业', '男', '20', '长春', '13800000000', '0', null, 'N', '2000', '0', '10102', null, '2009');
INSERT INTO `student` VALUES ('91010203', '姚桂娇', '女', '23', '长春', '13800000000', '0', null, 'N', '2000', '0', '10102', null, '2009');
+-------+--------+---------+---------+
| bedid | flatid | classid | arrange |
+-------+--------+---------+---------+
| 0 | 1 | 10101 | |
| 1 | 2 | 10101 | Y |
| 2 | 1 | 30201 | Y |
| 3 | 2 | 30201 | Y |
| 4 | 4 | 30201 | Y |
| 33 | 2 | 30202 | Y |
| 44 | 3 | 10202 | N |
| 234 | 0 | 30202 | N |
+-------+--------+---------+---------+
8 rows in set (0.00 sec)mysql> select * from flat;
+--------+------+------+
| flatid | borg | cost |
+--------+------+------+
| 0 | null | 0 |
| 1 | 男 | 1111 |
| 2 | 女 | 2222 |
| 3 | 男 | 3333 |
| 4 | 女 | 4444 |
+--------+------+------+
5 rows in set (0.00 sec)mysql> select * from student;
+----------+--------+------+------+---------+-------------+-------+---------+------------+----------+-------+---------+--------+------+
| id | name | sex | age | address | phone | bedid | bedcost | registered | spending | spent | classid | userid | date |
+----------+--------+------+------+---------+-------------+-------+---------+------------+----------+-------+---------+--------+------+
| 91010101 | 丁乙甲 | 男 | 21 | 通化 | 13900000000 | 0 | NULL | N | 2000 | 3111 | 10101 | NULL | 2009 |
| 91010102 | 索春龙 | 男 | 22 | 安徽 | 13910000000 | 0 | NULL | N | 2000 | 3311 | 10101 | NULL | 2009 |
| 91010103 | 刘莉莉 | 女 | 22 | 白城 | 13920000000 | 0 | NULL | N | 2000 | 0 | 10101 | NULL | 2009 |
| 91010104 | 隋鑫 | 女 | 22 | 松原 | 13930000000 | 1 | NULL | N | 2000 | 0 | 10101 | NULL | 2009 |
| 91010201 | 河江山 | 男 | 20 | 陕西 | 13800000000 | 22223 | NULL | Y | 2000 | 3111 | 10102 | NULL | 2009 |
| 91010202 | 祝立业 | 男 | 20 | 长春 | 13800000000 | 0 | NULL | N | 2000 | 0 | 10102 | NULL | 2009 |
| 91010203 | 姚桂娇 | 女 | 23 | 长春 | 13800000000 | 0 | NULL | N | 2000 | 0 | 10102 | NULL | 2009 |
+----------+--------+------+------+---------+-------------+-------+---------+------------+----------+-------+---------+--------+------+
7 rows in set (0.00 sec)
基于这些记录,你期望的结果是什么? 比如下面这些记录中的 bedid, bedcost 应该是多少?我全帮更新为 1,1111 行不行,如果不行为什么?正确的结果是什么?
mysql> select id,name,sex,bedid,bedcost
-> from student;
+----------+--------+------+-------+---------+
| id | name | sex | bedid | bedcost |
+----------+--------+------+-------+---------+
| 91010101 | 丁乙甲 | 男 | 0 | NULL |
| 91010102 | 索春龙 | 男 | 0 | NULL |
| 91010103 | 刘莉莉 | 女 | 0 | NULL |
| 91010104 | 隋鑫 | 女 | 1 | NULL |
| 91010201 | 河江山 | 男 | 22223 | NULL |
| 91010202 | 祝立业 | 男 | 0 | NULL |
| 91010203 | 姚桂娇 | 女 | 0 | NULL |
+----------+--------+------+-------+---------+
7 rows in set (0.00 sec)mysql>
| id | name | sex | bedid | bedcost |
+----------+--------+------+-------+---------+
| 91010101 | 丁乙甲 | 男 | 44 | 4444 |
| 91010102 | 索春龙 | 男 | 0 | NULL |
| 91010103 | 刘莉莉 | 女 | 0 | NULL |
| 91010104 | 隋鑫 | 女 | 1 | NULL |
| 91010201 | 河江山 | 男 | 22223 | NULL |
| 91010202 | 祝立业 | 男 | 0 | NULL |
| 91010203 | 姚桂娇 | 女 | 0 | NULL |
+----------+--------+------+-------+---------+
床位编号(bedid)是随便安排给student的。只要 公寓类型flat.borg与student性别相符就可以然后把相应床位所对应的 cost 赋值给student的bedcost就可以~~~
比如说第一个丁乙甲同学
输入一个床位 44安排给他,把bed 表里的bedid给了丁乙甲的 bedid
然后通过安排的床位找到 该床位的公寓号(flatid)通过该flatid找到这公寓的价格cost 4444元。
把4444赋值给 student丁乙甲的bedcost里面。呵呵呵
好像有点乱乱的
不过我自己知道 怎么回事。就是描述不清
2。每个student床位分配好后的cost倒是容易。直接
update student,
bed inner join flat using (flatid)
set student.bedcost=flat.cost
where student.bedid=bed.bedid;
我把业务流程弄出来吧。要不太乱了床位录入insert into bed (bedid, flatid,classid,arrange) values(" 编号(手动输入的值) ","
公寓编号flatid(从flat里count的) "," +班级代码classid(从班级表里count的) ",'N(为安排默认值是N)')";获得床位的sql快
select bed.*, flat.* from bed, flat where bed.flatid = flat.flatid and flat.borg = '女' and bed.arrange = 'N' and bed.classid=30201 (按照班级和性别来获得床位,目的是让一个班级的同学都在一个公寓,并且男女在不同的公寓)选择之后对数据库更新//对sutdent表更新
"update student set bedid =" + object.getStudent().getBedid() + " where id="+ object.getStudent().getId();
object.getStudent().getBedid() ——————为同学选择的床位bedid
object.getStudent().getId();——————-学生的学号//对bed更新
"update bed set arrange ='Y' where bedid=" + object.getStudent().getBedid();//更新bed表里的安排状态把N 改成no
//对student里的bedcost、更新我需要的就是这个语句。
"update student set bedcost
哈哈。我想我需要的就是这个sql
谢谢您。我去试试程序。。太谢谢你了