首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

面试之sql,大家进来看看如何做

2012-09-03 
面试之sql,大家进来看看怎么做?凭证明细表字段(主键为:日期、凭证字、凭证号、序号)如下:日期| 凭证字 | 凭证

面试之sql,大家进来看看怎么做?
凭证明细表字段(主键为:日期、凭证字、凭证号、序号)如下:
日期 | 凭证字 | 凭证号 | 序号 | 借贷方向 | 发生金额 |
2006-9-13 | 转 | 1 | 1 | 借 | 100 |
2006-9-13 | 转 | 1 | 2 | 借 | 100 |
2006-9-13 | 转 | 1 | 3 | 贷 | 200 |
2006-9-14 | 付 | 1 | 1 | 借 | 300 |
2006-9-14 | 付 | 1 | 2 | 贷 | 300 |

凭证表字段(主键为:日期、凭证字、凭证号)如下:
日期 |凭证字|凭证号|借金额|贷金额|
2006-9-13 |转 | 1 | ? | ? |
2006-9-14 |付 | 1 | ? | ? |

另外,也可以看到,凭证明细表的(日期、凭证字、凭证号)是凭证表的外键。
现在需要使用SQL的UPDATE方法,来更新凭证表的【借金额】和【贷金额】值。
其值等于对就明细表的所有同借贷方向的记录的发生金额的合计。

比如上表明细,更新完的结果如下;
日期 |凭证字|凭证号|借金额|贷金额|
2006-9-13 |转 | 1 | 200 | 200 |
2006-9-14 |付 | 1 | 200 | 300 |
请写出SQL语句

以上是我在面试中遇到真实试题,大家出出主意吧!!

[解决办法]
好像是这样,用中文做表名字段名真爽啊:

SQL code
mysql> select * from `凭证表`;+-----------+--------+--------+--------+--------+| 日期      | 凭证字 | 凭证号 | 借金额 | 贷金额 |+-----------+--------+--------+--------+--------+| 2006-9-13 | 转     | 1      | ?     | ?     || 2006-9-14 | 付     | 1      | ?     | ?     |+-----------+--------+--------+--------+--------+2 rows in set (0.00 sec)mysql> select * from `凭证明细表`;+------------+--------+--------+------+----------+----------+| 日期日期 | 凭证字 | 凭证号 | 序号 | 借贷方向 | 发生金额 |+------------+--------+--------+------+----------+----------+| 2006-9-13  | 转     | 1      | 1    | 借       | 100      || 2006-9-13  | 转     | 1      | 2    | 借       | 100      || 2006-9-13  | 转     | 1      | 3    | 贷       | 200      || 2006-9-14  | 付     | 1      | 1    | 借       | 300      || 2006-9-14  | 付     | 1      | 2    | 贷       | 300      |+------------+--------+--------+------+----------+----------+5 rows in set (0.00 sec)mysql> update `凭证表` as a    -> set `借金额` = (select sum(`发生金额`) from `凭证明细表` as b where a.`日期` = b.`日期` and `借贷方向` = '借'),    ->     `贷金额` = (select sum(`发生金额`) from `凭证明细表` as b where a.`日期` = b.`日期` and `借贷方向` = '贷');Query OK, 2 rows affected (0.03 sec)Rows matched: 2  Changed: 2  Warnings: 0mysql> select * from `凭证表`;+-----------+--------+--------+--------+--------+          ;| 日期      | 凭证字 | 凭证号 | 借金额 | 贷金额 |+-----------+--------+--------+--------+--------+| 2006-9-13 | 转     | 1      | 200    | 200    || 2006-9-14 | 付     | 1      | 300    | 300    |+-----------+--------+--------+--------+--------+2 rows in set (0.00 sec) 

热点排行