关于MY SQL的视图,希望大家帮忙,在线等
首先,有两个表,一个是用户存钱的表,一个是用户消费(包括收入和支出)的两个表,例如,表结构大体如下:
用户存钱的表(cunqian):
id user_id volume time
1 0001 100 2007-06-11
2 0001 100 2007-06-15
3 0001 100 2007-06-18
用户消费的表(shouzhi):
id user_id volume time flag
1 0001 50 2007-06-18 0
2 0001 10 2007-06-18 1
3 0001 8 2007-06-18 1
业务逻辑如下:首先用户在存钱(cunqian)表存钱,然后就可以消费了;消费时在消费(shouzhi)表中记录消费情况,如果flag值是0,证明是花钱了;flag值是1,证明是收入了。
我在程序里控制:
SELECT SUM(VOLUME) FROM CUNQIAN WHERE USER_ID= '0001 ' 得到指定用户的总金额
SELECT SUM(VOLUME) FROM SHOUXIAO WHERE FLAG=1 AND USER_ID= '0001 ' 得到指定用户的总收入
SELECT SUM(XS_VOLUME) FROM SHOUXIAO WHERE FLAG=0 AND USER_ID= '0001 ' 得到指定用户的总支出(消费)
然后在程序计算用户当前的总余额。
需求:怎么在SQL里实现同样的功能,最好是用视图实现,存储亦可,不之道MYSQL5支不支持存储过程,只要不是像我这样在程序里控制就行。我的SQL垃圾,先多谢大家了。
------解决方案--------------------第一种方法
CREATE PROCEDURE a @@SUM money OUTPUT
AS
SELECT @@SUM = SUM(VOLUME) FROM CUNQIAN WHERE USER_ID= '0001 '
GO
declare @b money
exec a @b output
select @b+@b
print convert(varchar(12),@b)
--------------
第二种方法
declare @c money
SELECT @c = SUM(VOLUME) FROM CUNQIAN WHERE USER_ID= '0001 '
select @b+@b
print convert(varchar(12),@c)
------解决方案--------------------你自己不是已经写出来视图了?
CREATE VIEW yueV as
SELECT C1.SV+S1.SV-S2.sv FROM
(SELECT SUM(VOLUME) as SV FROM CUNQIAN WHERE USER_ID= '0001 ' ) as C1,
(SELECT SUM(VOLUME) as SV FROM SHOUXIAO WHERE FLAG=1 AND USER_ID= '0001 ') as S1,
(SELECT SUM(VOLUME) as SV FROM SHOUXIAO WHERE FLAG=0 AND USER_ID= '0001 ') as S2
好想是这个样子写的啦,基本语句是你写的,我组合了一下,没有经过测试.