今天老板把我叫过去,给我分析了一下我写的存储过程【捂脸羞愧中。。。】,因为又临时加了个需求需要关联另外一个视图,我写成了内联,所以读取出来的数据少了好多。
select t1.MOTCARRIERNAME ,t2.ROUTENAME ,y.BUSLICENSE ,y.ACCTPRICE ,y.PRICE ,y.CANACCTPRICE ,y.CENTERACCTPRICE ,y.OTHERACCTPRICE ,y.STAACCTPRICE ,y.TKAMOUNT ,y.SCHBILLID ,m.ManualTicketsStationFee ,m.ManualTicketsFee from (Select b.MOTCARRIERID ,b.ROUTEID ,b.BUSLICENSE ,a.SCHBILLID ,a.ACCTPRICE ,a.CANACCTPRICE ,a.CENTERACCTPRICE ,a.OTHERACCTPRICE ,a.PRICE ,a.STAACCTPRICE ,a.TKAMOUNT From history.TKSCHBILLHISTORY a ,history.TKSERIALSCHHISTORY b ,history.TKCARRYSTASCHHISTORY c Where a.Drvdate between @pStartDate and @pEndDate and a.SchBillStatusId=1 and b.SchId=a.SchId and b.Drvdate=a.Drvdate and a.schid=c.schid and a.DRVDATE=c.DRVDATE )y ,baseinfo.MOTORCARRIER t1 ,baseinfo.ROUTE t2 ,Settlement.dbo.View_ManualTicket m where t1.MOTCARRIERID=y.MOTCARRIERID and t2.ROUTEID =y.ROUTEID and m.BusLicense=y.BUSLICENSE order by t1.MOTCARRIERNAME,t2.ROUTENAME,y.BUSLICENSE
这种关联叫做内联,表A,表B where A.Id=B.Id,只有表A,表B里都有这个ID,这条数据才会被显示出来。但是我的项目中需要的是以表A为主表,只要表A中有的数据都要显示出来,表B中有与表A相关的数据就显示,没有则置为空。
即A left join B on A.Id=B.Id
总结
以上所述是小编给大家介绍的inner join 内联与left join 左联的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案:
问题内容: 我已经搜索过,但没有找到明确的答案。以下哪一项对SQL Server的性能更好: 或者… 我尝试过同时运行这两个程序,但是很难确定。我会很高兴地解释一个为什么比另一个更快,或者这取决于情况。 问题答案: 您的两个查询不做相同的事情。特别是,如果两个表中的值重复,则第一个将返回重复的行。 如果要在其他两个表中的任何一个中查找行,我建议使用: 并且,在和中都创建索引。 您的原始查询哪个更快
问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…
我有一个表'gems'在那里存储帖子(例如blog)。对帖子的回复也存储在同一个表中,其中有一个字段存储父帖子的密钥。每个帖子都可以附上文件。 我需要得到一个与相关的回复和附加文件的帖子列表。因此“gems”有多个左联接--一个连接到它自己,一个连接到带有文件名的“gemdetail”。此查询有效: 但是,如果我每个帖子有20个回复和10个文件,那么返回的记录数是每个帖子200条。限制条款起作用,
本文向大家介绍Markdown 内联代码,包括了Markdown 内联代码的使用技巧和注意事项,需要的朋友参考一下 示例 Markdown支持添加内联代码like this,该代码是通过将文本包装在反引号中获得的: `code here` 或者,您可以将内联代码放在<code>和</code>HTML标记之间。 考虑以下降价代码: 这将产生以下输出: This是内联代码块!This也是一个! 如果
问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以