在Mysql数据库中 如何实现表的多对一关联?请说具体一点~

在Mysql数据库中 如何实现表的多对一关联?请说具体一点~,第1张

现在的数据库基本都是关系数据库,表与表之间的关联一般都是靠字段来维持的。

例如3个表,分别是用户信息表,购物订单表,帐户金额明细表

表结构如下(我写简单哈):

用户信息表字段:userid,username,password

购物订单表字段:orderid,userid,goods,price

帐户金额明细表:aid,userid,orderid,price

从上面3个表就能看出,他们之间的管理是:

通过用户信心表的userid可以获得购物订单表的订单信息,如果想要获得用户或者购物订单的账户金额明细数据,可使用userid或者orderid去帐户金额明细表查询相关数据,示例SQL如下:

SELECT * FROM 购物订单表字段 where userid=12

SELECT * FROM 帐户金额明细表 where userid=12

SELECT * FROM 帐户金额明细表 where orderid=3356

如果你还不明白的话,可发消息给我。

余额可以单独用一个余额记录表,这样如果要查询每次消费记录的时候,也能查出来每次消费后还有多少余额。余额记录表里面主要是三个字段:用户账号、每次消费后的余额、时间点。

CREATE TABLE account

(

id integer NOT NULL DEFAULT nextval('trade_id_seq'::regclass),

no character varying(10) NOT NULL, -- 账号

balance money NOT NULL DEFAULT 0.00, -- 余额

datetime timestamp without time zone NOT NULL DEFAULT (now())::timestamp(0) without time zone,

CONSTRAINT account_pkey PRIMARY KEY (id)

)

通过每次的余额变化就知道每次消费后的余额情况

select acc.*, (select sum(balance)+acc.balance from account as ac where ac.id <acc.id) as profit from account as acc

id | no | balance | datetime | profit

----+------+----------+---------------------+---------

1 | 1000 |$0.00 | 2013-10-09 10:51:10 |

2 | 1000 | $12.60 | 2013-10-09 10:51:22 | $12.60

4 | 1000 | $16.80 | 2013-10-09 10:51:42 | $29.40

5 | 1000 | $100.00 | 2013-10-09 10:51:49 | $129.40

6 | 1000 | $200.00 | 2013-10-09 10:56:35 | $329.40

7 | 1000 | $50.45 | 2013-10-09 10:57:23 | $379.85

8 | 1000 | $75.50 | 2013-10-09 10:57:31 | $455.35

9 | 1000 | -$55.30 | 2013-10-09 10:59:28 | $400.05

10 | 1000 | -$200.00 | 2013-10-09 10:59:44 | $200.05

(9 rows)

比方说一张表单,有表头,有表体,那么表头就是主表,表体就记录了明细,所以叫明细表,例如:采购订单,供应商,日期,采购人,付款方式,合同号等就是主表内容,买的什么东西,价格,交期等信息就是明细表


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7244061.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存