自家晓得的 toB 产品框架(三)

前文再续,书接上一次。上一篇著作跟我们大饱眼福了这一、两年的 toB
产品的一个倾向,本篇想跟我们分享下另一个方向。如果你从未看过自己从前的享受,可以看看:

1   概述

我精通的 toB 产品框架(一)
自家精晓的 toB 产品框架(二)

1.1 
已发布【SqlServer系列】文章

假使说 toB
产品的率先个方向是采纳互联,那么此外一个趋势就是商店间的音讯互联。像传统私有云的
toB
产品,基本上就是个音讯孤岛,公司音讯很少流出,或者与其余集团直接互换音讯。举个例子:

您的客户需要订一批货物,销售一般会在铺子的ERP或CRM系统录入订单或合同,然后走审批。该合同或者还亟需快递到您的客户这里,然后又走一次审批。最终形成生产和发货。整个工艺流程非凡麻烦,而且速度很慢。(这一个情状已经算是快的了,还有更长更麻烦的。)

1.2 
本篇小说内容概要

一面,即便是粗略的消息触达,可能都会很劳顿。拿钉钉做为例子:

  
子查询和表连接,重假使指向两张及以上表之间涉及关系进展查询。子查询,按是否单身划分,分为独立子查询和相关子查询;按内部查询重返是否为单值,分为单值子查询(注意:应清楚单值子查询和标量子查询关系)和多值子查询;如下表格内容为按子查询是否单身来划分的。

你所在的店堂在应用钉钉,内部交流直接是使用钉钉,不过当你需要跟你的合作伙伴、你的客户交换时,你仍旧需要开辟邮箱、QQ或者微信,因为您的合作方不自然在动用钉钉。

图片 1

先是个场景,将会是当下 toB
平台产品重要关注的切入点。即类似钉钉3.0生产的服务窗的定义。集团的外部好友(合作伙伴、客户、甚至供应商)都能通过这些服务窗发起订货、退货甚至联络客服等等。而这一个服务窗的幕后,将会是信用社的ERP系统,甚至是合作社的智能创立系统。其出品框架将会接近(A、B为不同企业):

1.3
本章测试样表和sql

美梦的情景将会是如此的故事(举例,非实际):

工作场景:

假如某经销商需要预订100箱面包,该经销商直接在面包生产商那订购,面包生产商收到订购订单后,系统活动进行库存盘点,如若发现商品不足,机器自动起先生产。同时发现面粉也不够了,会自动向上游的面粉厂订购面粉。

有两张表,分别为顾客表(顾客ID,顾客姓名,顾客集团),即Customers(CustID,CustName,CustCompany)和消费者订单表(顾客ID,订单ID,订单日期),即Orders(CustID,OrderID,OrderDate),两张表经过顾客ID(CustID)举办关联。

这套产品框架貌似能跑通,可是事实上是个大坑。比如目前钉钉提供的服务窗能力对于
B2B
的合作社揣测就相比费心了,毕竟这种合作社涉及的订单金额更大,流程也进一步繁琐,人情交易也更多。怎么样在完成新闻流动之余,还完了销售提速,将是成品需要突破的地点。单纯的音讯流动并无法让公司用起来,只有让公司来看了利润才是最要紧的。
单向,B2C的商家跑这套流程,可能也不太好使,因为C端的用户并不一定使用钉钉,可是阿里倒是可以考虑将旺旺与钉钉、新浪与钉钉打通,从而化解B、C端之间的信息触达问题。可是仍旧很难根本上解决音信触达的题目。所以就当前看来,何人最优机会根本上缓解信息触达的题材?揣测就是店铺微信了。

图片 2

小程序的面世,意味着将来合作社微信也将会设有使用平台的能力,而且它的力量比我前边提到的
toB
产品框架还要强大,因为它在平凡的框架上,还搭载了奇特的次序框架,大大提升了感受,不像明日的H5应用这样需要实时加载。而且,因为页面可以调用小程序提供的机件,这多少个零件早已内置在微信客户端,它们的体会将会越来越「原生」。所以自己觉得未来较为理想的
toB 的制品框架将会是那般:

SQL语句分别如下:

平台除了提供含有 toB
属性的力量外,还会很是提供统一的计划、审核以及运营标准,甚至还会提供类似Swift(Swift)这样的付出语言,或者类似微信小程序这样的特有语言。

(1)成立子查询DB:WJM_CHildQuery

但是我脑海中还有一个一发疯狂的设想,这就是…

1 --创建子查询数据库WJM_ChildQuery
2 IF DB_ID('WJM_CHildQuery') IS NOT NULL
3    DROP DATABASE WJM_ChildQuery
4    GO
5    CREATE DATABASE WJM_ChildQuery

好吧这次貌似写得有点多了,很累呀

(2)成立Customers表并初阶化

 1 USE WJM_CHildQuery
 2 
 3 --CREATE TABLE Customers
 4 CREATE TABLE Customers
 5 (
 6    CustID INT IDENTITY(1,1)  NOT NULL PRIMARY KEY,  --顾客ID
 7    CustName  VARCHAR(50),--顾客姓名
 8    CustCompany VARCHAR(50) --顾客公司
 9 )
10 
11 --Initial Customers
12 
13 INSERT INTO Customers VALUES('赵武','A')
14 INSERT INTO Customers VALUES('刘杨','B')
15 INSERT INTO Customers VALUES('张永为','C')
16 INSERT INTO Customers VALUES('李龙飞','D')
17 INSERT INTO Customers VALUES('邓华','E')
18 INSERT INTO Customers VALUES('张涛明','F')

施行查询语句:

1 SELECT *
2 FROM Customers

查询结果为:

图片 3

 (3)创设Orders表并初阶化

 1 USE WJM_CHildQuery
 2 
 3 CREATE TABLE Orders
 4 (
 5   OrderID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, --订单ID
 6   CustID INT NOT NULL,  --顾客ID
 7   OrderDate DATE --订单日期
 8 ) 
 9 
10 --Initial Orders
11 
12 INSERT INTO Orders VALUES(1,'2015-06-25')
13 INSERT INTO Orders VALUES(2,'2017-06-03')
14 INSERT INTO Orders VALUES(3,'2016-04-25')
15 INSERT INTO Orders VALUES(4,'2016-03-04')
16 INSERT INTO Orders VALUES(5,'2013-03-04')
17 INSERT INTO Orders VALUES(6,'2017-01-01')
18 INSERT INTO Orders VALUES(2,'2016-08-25')
19 INSERT INTO Orders VALUES(5,'2016-12-25')

推行查询语句:

1 SELECT *
2 FROM Orders

查询结果为:

图片 4

2  独立子查询

2.1 
独立标量子查询

问题:请用二种情势重返Orders表中的订单ID最大的订单音讯。

模式一:标量单值子查询

1 --返回Orders表中订单ID最大的记录
2 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
3 FROM Orders AS OutQueryOrders
4 WHERE OutQueryOrders.OrderID=
5 (
6    SELECT MAX(InnerQueryOrders.OrderID)
7    FROM Orders InnerQueryOrders
8 )

查询结果:

图片 5

结果分析

a.期望结果

图片 6

b.查询语句分析

图片 7

情势二:拔取变量

1 DECLARE @MaxOrderID AS INT=
2 (
3    SELECT MAX(OD.OrderID)
4    FROM Orders AS OD
5 )
6 
7 SELECT *
8 FROM Orders 
9 WHERE Orders.OrderID=@MaxOrderID

查询结果:

图片 8

结果分析:

a.期望结果

图片 9

 

b.查询语句分析

图片 10

2.2  独立子查询

题目:重临订单表中订单ID>5的顾客音信

1 --返回订单表中订单ID>5的顾客信息
2 SELECT C.CustID,C.CustName,C.CustCompany
3 FROM Customers AS C
4 WHERE C.CustID  IN
5 (
6     SELECT Orders.CustID
7     FROM Orders
8     WHERE Orders.OrderID>5
9 )

询问结果:

图片 11

结果分析:

a.期望结果

图片 12

b.查询语句分析

图片 13

2.3  小结

a.每个子查询均有所属的外部查询;
b.独立子查询独立于其外部查询;
c.可以把独立子查询单独运行;
d.独立子查询在执行外部查询之前先执行一次,接着外部查询再使用子查询的结果继续进行查询;
e.标量子查询只返回单个值,不管其是否是独立子查询;
f.标量子查询可以出现在外部查询中期望使用单个值的任何地方(WHERE、SELECT等)
g.算术运算符(>,>=,<,<=,!=,=)其后只能为单值;
h.如果标量子查询没有返回任何值,其结果就转换为NULL,和NULL进行比较得到的是UNKNOWN,查询过滤器不会返回任何让过滤表达式计算结果为UNKOWN的行;
i.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
j.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

3   相关子查询

3.1 
SQL示例及示范结果

问题:在订单表Orders表中,为各类客户再次回到其订单ID最大的订单

 1 --为每个客户返回其订单ID最大的订单
 2 
 3 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
 4 FROM Orders AS OutQueryOrders
 5 WHERE OutQueryOrders.OrderID=
 6 (
 7    SELECT MAX(InnerQueryOrders.OrderID)
 8    FROM Orders InnerQueryOrders
 9    WHERE OutQueryOrders.CustID=InnerQueryOrders.CustID
10 )

查询结果:

图片 14

3.2  示例结果分析

a.期望结果

图片 15

 

b.查询语句分析

图片 16

3.3  小结

a.相关子查询内部查询依赖于外部查询,不能独立运行;
b.相关子查询内部查询中,受限制于外部查询的条件,如上述例子中的WHERE之后的条件;
c.在逻辑上,子查询会为每个外部查询单独计算一次;
d.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
e.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

4   子查询拓展

 关于子查询,还有不少内容,如重临前后记录查询,连续聚合,行为不当等,但这有的内容属于子查询的中高等部分,准备放在【SqlServer类别】中高等部分来与我们大快朵颐。

5   参考文献

【01】Microsoft  SqlServer
2008技术内幕:T-SQL 语言功底

【02】Microsoft  SqlServer
2008技巧内幕:T-SQL 查询

6   版权

 

  • 感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同提高。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些随笔利用读书、参考、引用、抄袭、复制和粘贴等多种情势组成而成的,大部分为原创。
  • 如你喜欢,麻烦推荐一下;如你有新想法,欢迎指出,邮箱:2016177728@qq.com。
  • 可以转载该博客,但必须闻明博客来源。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图