Sql 如何使用此视图更新表
我有三张表,分别是航空公司、目的地和价格表 航空公司表有两列-航空公司代码和国际民航组织代码。目的地表有两列-机场代码和目的地。价格表有以下列-ID、机场代码、航空公司代码、离港、价格和航线 价格表中的PK为ID。航空公司表中的PK为航空公司代码。目的地表中的PK为机场\国际民航组织\代码。价格表中的Airport_ICAO_Code和Airline_ICAO_Code列为FKs 我创建了一个名为InputFlightPrices的视图,用于更新存储航班价格的PriceTable。我之所以使用这个视图,是因为它可以让我清楚地看到哪些航线需要更新,因为很难从代码中确定航空公司和目的地 这是视图代码:Sql 如何使用此视图更新表,sql,sql-server,ssms,Sql,Sql Server,Ssms,我有三张表,分别是航空公司、目的地和价格表 航空公司表有两列-航空公司代码和国际民航组织代码。目的地表有两列-机场代码和目的地。价格表有以下列-ID、机场代码、航空公司代码、离港、价格和航线 价格表中的PK为ID。航空公司表中的PK为航空公司代码。目的地表中的PK为机场\国际民航组织\代码。价格表中的Airport_ICAO_Code和Airline_ICAO_Code列为FKs 我创建了一个名为InputFlightPrices的视图,用于更新存储航班价格的PriceTable。我之所以使用这
Create View InputFlightPrices
As
Select ID,Airline,Destination,AirportName,Price,Departure,RouteStatus
From Airlines As a
Join PriceTable As p
On a.Airline_ICAO_Code = p.Airline_ICAO_Code
Join Destinations As d
On d.Airport_ICAO_Code = p.Airport_ICAO_Code;
我希望视图显示所有航空公司a-z,但我不能在视图中使用Order By子句
因此,我在视图上运行了下面的查询,以便在视图A-Z中订购航空公司
Select * from InputFlightPrices
Order By Airline Asc
上述语句的结果视图显示正确,但不允许我编辑其中的记录以更新表。
有解决办法吗
谢谢你的帮助
我编辑这篇文章是为了回应Philpxy,试图澄清我想要什么:
您可以编辑您的
Select*从InputFlightPrices Order By Airline Asc
query per answers to:
在Mgmt Studio中,编辑前200名时,可以查看SQL
窗格-右键单击网格并选择窗格->SQL或
按左上角的按钮。这将允许您编写自定义
查询以深入到要编辑的行
转到工具>选项。在左侧的树中,选择SQL Server
对象资源管理器。将选项“编辑顶行命令的值”设置为
0现在,您可以从上下文菜单查看和编辑整个表
查询结果涉及视图时重新更新:
来自SQL Server 2014
视图定义中的SELECT子句不能包括以下内容:
- ORDERBY子句,除非select语句的select列表中还有TOP子句 ORDER BY子句仅用于确定视图定义中TOP或OFFSET子句返回的行。命令 BY子句不保证在查询视图时得到有序的结果, 除非在查询本身中也指定了ORDER BY
- 任何修改,包括UPDATE、INSERT和DELETE语句,都必须只引用一个基表中的列
另请参见SQL Server 2014。视图中不更新记录;更新表中的记录。你能说明你想做什么吗?示例数据和所需结果最有帮助。更新代码在哪里?order by仅对查看数据很重要,update语句应该具有更具体的逻辑来更新行。如果您的视图不允许您更新记录,请检查使用视图进行更新的限制。如果update语句影响多个基础表,则您不能发出update语句。至少发布
视图
。如果视图有group by
I编辑了上面的Qs,则无法更新视图。我尝试使用SSMS直接编辑select语句返回的视图中的行。我正在使用视图更新基础表。我有多个联接,但唯一要更新的列来自PriceTable,因此应该可以。我将仅从视图中的1个表(PriceTable)更新2列。他们是离开和价格阅读对你的问题的评论,并把信息放在你的问题中。这里你没有提到钥匙,但我的回答是它们很重要。如果您不提供目前为止帮助告诉您的信息,您希望如何获得更多帮助?关于“Mgmt Studio,当您编辑前200名时,您可以通过右键单击网格并选择pane->SQL或左上角的按钮查看SQL窗格。”这仅适用于使用单个表的情况,也就是说,没有