多处变更后左连接查询记录表

多处变更后左连接查询记录表

文献种类:专题技术文献;
开发工具与关键技术:VS
作者:蛋蛋;
撰写时间:2019/07/17

首先我们来看一个例子;
第一:需要一个业务流程是 排号==》预订==》认购==》签约合同
那么在这一系列操作当中【预订】 可变更业务员,变更也就是修改操作;然而【认购】以及【签约合同】都有变更业务员的操作,但是,每变更一次就需要记录一次数据!
在这里插入图片描述
预订变更业务员模态框中,预订单是随机生成给他前缀Yd再加上时间;因为时间是不停的变动所以确保唯一性防止重复;预订单和原业务员以及新业务员是回填上的数据,但是变更业务员操作是修改新业务员,所以在预订单加上了readonly (只读属性)第二:修改完之后就需要新增这条数据,也就是这次变更记录可查看主表(变更表)
在这里插入图片描述
表头如上图所示分别在预订订单是可变更以及认购与签约合同这几步操作当中都可变更;但前提是每个操作变更的单号不一致以及变更日期 首先,我需要修改业务员,获取到业务员ID以及业务员名称
//Linq修改
var tbSalesman = myModels.S_Salesman.Where(m => m.SalesmanID == sSalesman.SalesmanID).SingleOrDefault();
tbSalesman.SalesmanName = sSalesman.SalesmanName;

先用Lambda表达式把业务员表查询出来然后修改业务员名称修改成功之后就需要新增当前该条数据以便到(主表)中查询该条数据信息
修改成功就需要 B_Alteration tbAlteration = new B_Alteration(); //实例化变更表
tbAlteration.OrderID = OrderID;//拿到变更表中的预订ID
变更号以及变更日期可分别显示为流水账号当前时间!这样变更号就防止重复,变更日期为系统当前日期
新增完该信息之后就需要在主表当中如何查询出来了因为主表包括的有三种情况;分别是在预订、认购、以及合同、不同的地方变更所以前面的单号也有区分,
预订的单号为(Yd~~)、认购的单号为(RG~~)、合同(签约~~)
那么这三种情况如何在一个表中显示呢?
所以在查询主表的时候需要实例化一个string类型去接收,先让其为 SubscriptionOdds = “”,第一种情况:在预订中变更了所以就有预订的ID以及变更ID就需要判断(认购、合同等ID)就为NULL
在这里插入图片描述
查询主表的时候连接以上三个ID,

  1. 分别判断如果预订ID有值其他两个外键ID为NULL再加上变更ID所以页面显示的就是预订变更时的记录信息;
  2. 如果在其认购变更成功之后就有一条信息记录,那就是预订ID以及合同ID为NULL;
  3. 如果在其合同变更成功之后就有一条信息记录,那就是预订ID以及认购ID为NULL;
    在一个就是直接在查询的控制器方法写左连接join tbSubscription in myModels.B_Subscription on tbAlteration.SubscriptionID equals tbSubscription.SubscriptionID into fffff//认购表
    from tbSubscription in fffff.DefaultIfEmpty()正常联表然后在 into后面任意命名判断是否为空,反之,其余两个也同样SubscriptionID = tbAlteration != null ? tbAlteration.SubscriptionID : 0,//认购ID用到三目运算符检验不为空或者为0
    在这里插入图片描述
    这样页面就可以在一个页面显示出三条不同的数据了;也就是无论在预订还是认购以及合同变更一次就会有一次记录信息啦!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值