关于订单和收款项目得设计思路,求大神指教。。。

时间:2022-01-31 12:46:43
现有订单表_Order,记录订单的基础信息,还有一个订单收款表_Order_money,用于记录订单收到得款项,字段包括(订单ID,款项类型(定金、预付款、尾款等),交款时间)。

需求:查询订单得时候,能按照已交定金订单,已交预付款订单,已交尾款订单;怎么做才能准确且快速得实现这样得查询。

可能会出现得情况:

有得订单只交了定金
有得订单交了定金和预付款
有得订单直接交了预付款,没交定金。
有得订单可能直接交了尾款等。

我这个菜鸟初步想得是,在订单表做一个字段_Money_State,用来记录收款状态,比如 定金是1,预付款是2,尾款是3,,然后用逗号隔开,比如交了定金得客户字段就存1,交了定金和预付款得就存1,2,然后我做订单查询得时候in查询就行了。

不知道我这个方法可不可行,还有大神有木有更好得办法。

7 个解决方案

#1


存储为 1,2 用 in 是查不到的,MySQL 可用 find_in_set 查找,其他数据库就只能用 like 了
你可以使用 set 或 enum 类型保存

即便如此,你也没法区分  定金是多少,预付款是多少

#2


引用 1 楼 xuzuning 的回复:
存储为 1,2 用 in 是查不到的,MySQL 可用 find_in_set 查找,其他数据库就只能用 like 了
你可以使用 set 或 enum 类型保存

即便如此,你也没法区分  定金是多少,预付款是多少


或者这样我在 订单表里新增三个字段,订单金额、预付款金额、尾款金额,添加款项得时候根据款项类别同时更新不同的字段,直接把金额写到订单表,查询得时候 查询已交定金得订单就  订单金额>0查询 预付款订单就预付款金额>0,

这样行么,版主大大。。。不过有一点是,我这个款项类型(定金、预付款、尾款)是做到数据字典得,这三个可能不是固定的,以后可能还会新增新的款项类型。

#3


新增三个字段是可以的
但是流水账不是更清晰吗?

#4


引用 3 楼 xuzuning 的回复:
新增三个字段是可以的
但是流水账不是更清晰吗?


流水账是什么意思?我是菜鸟,版主愿闻其详。。。

#5


这就是流水账
其他信息 定金     1000
其他信息 预付款 2000
其他信息 尾款     500

#6


 我觉得你可能想多了,按照逻辑 这几个数据只是针对一个订单 或者一个汇总处理
那么从查询上来说 即使是 每个字段判断一下 也没有多少工作量.所以个人建议 怎么处理都可以, 我个人比较偏向于每个数据独立一个字段 查询到的数据就不再需要做处理了.

#7


这个不能用in来查询,是需要用like来查询的,还有就是我看了一下 你们这个流程好像有点问题,没交定金怎么可以交预付款,还有尾款之类的,这一些建议一步步按照流程走比较好,没有交定金就不能交预付款,没有交预付款就不能交尾款,还有建议多增加三个字段定金 预付款 尾款 ,如果定金交了,则定金值为1,预付款尾款也是如此,这样更容易理解,也比较好操作

#1


存储为 1,2 用 in 是查不到的,MySQL 可用 find_in_set 查找,其他数据库就只能用 like 了
你可以使用 set 或 enum 类型保存

即便如此,你也没法区分  定金是多少,预付款是多少

#2


引用 1 楼 xuzuning 的回复:
存储为 1,2 用 in 是查不到的,MySQL 可用 find_in_set 查找,其他数据库就只能用 like 了
你可以使用 set 或 enum 类型保存

即便如此,你也没法区分  定金是多少,预付款是多少


或者这样我在 订单表里新增三个字段,订单金额、预付款金额、尾款金额,添加款项得时候根据款项类别同时更新不同的字段,直接把金额写到订单表,查询得时候 查询已交定金得订单就  订单金额>0查询 预付款订单就预付款金额>0,

这样行么,版主大大。。。不过有一点是,我这个款项类型(定金、预付款、尾款)是做到数据字典得,这三个可能不是固定的,以后可能还会新增新的款项类型。

#3


新增三个字段是可以的
但是流水账不是更清晰吗?

#4


引用 3 楼 xuzuning 的回复:
新增三个字段是可以的
但是流水账不是更清晰吗?


流水账是什么意思?我是菜鸟,版主愿闻其详。。。

#5


这就是流水账
其他信息 定金     1000
其他信息 预付款 2000
其他信息 尾款     500

#6


 我觉得你可能想多了,按照逻辑 这几个数据只是针对一个订单 或者一个汇总处理
那么从查询上来说 即使是 每个字段判断一下 也没有多少工作量.所以个人建议 怎么处理都可以, 我个人比较偏向于每个数据独立一个字段 查询到的数据就不再需要做处理了.

#7


这个不能用in来查询,是需要用like来查询的,还有就是我看了一下 你们这个流程好像有点问题,没交定金怎么可以交预付款,还有尾款之类的,这一些建议一步步按照流程走比较好,没有交定金就不能交预付款,没有交预付款就不能交尾款,还有建议多增加三个字段定金 预付款 尾款 ,如果定金交了,则定金值为1,预付款尾款也是如此,这样更容易理解,也比较好操作