问题标签 [sql-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
873 浏览

sql - SQL 视图从非空表推断可空列?

我有一个带有非空“数量”(十进制)和“状态”(int)列的产品表,并且我使用以下案例表达式在该表上创建了一个视图:

ProductTypeId 被正确推断为非空值。但是,此视图的 Quantity 列被推断为可为空,即使基础列不可为空。这对我来说没有任何意义。

在这种情况下,我可以使用 ISNULL/COALESCE 提供默认值并强制不可为空,但没有有意义的默认值,据我了解,这首先不应该发生。有什么想法吗?

0 投票
2 回答
261 浏览

sql - SQL 视图中的双列

我们有一个遗留接口插入到表 T1 中,它的值是"BODY_TEXT" (varcharmax), "BODY_BIN"(varbinarymax)。它当前只插入其中一列,而将另一列保留为 NULL。现在我们实现了一个新接口——只有"BODY"(varbinarymax)列的表 T2。

我需要创建一个应该替换 T1 的视图 V1,这意味着

等等……</p>

现在我不知道如何处理T2.BODY列……我需要做类似的事情 T2.BODY AS (whatever is not null(BODY_BIN, BODY_TEXT))。它还必须支持varcharmaxvs. varbinarymax。我尝试实现COALESCE意义 T2.BODY AS COALESCE(BODY_BIN, BODY_TEXT),但它不起作用。也没有

再次 - 在旧表中,我们有 T1 有两列 - BODY_BIN 和 BODY_TEXT。用户插入了一个值,而将另一个留空,因为 body 要么是二进制的,要么是文本的,但不是两者兼而有之。新界面有一个表 T2,它只有一列 BODY (varbinarymax),我被要求删除表 T1 并创建一个同名的视图。意思是为了保持向后可比性,他们应该仍然能够执行“插入 T1 值 X,Y”(X 是 DATA_BIN 或 NULL,Y 是 DATA_TEXT 或 NULL),但内容(取自 X 或 Y)应该被翻译成 T2 表中的一列 - BODY。我不知道如何把这个拉起来。

你能帮助我吗?

谢谢,

尼力

0 投票
8 回答
187986 浏览

tsql - SQL 视图 - 没有变量?

是否可以在视图中声明变量?例如:

给我语法错误:

关键字“声明”附近的语法不正确。

0 投票
1 回答
742 浏览

sql-server - 一对多关系的SQL视图、性能和计数

我需要一些帮助来为我的一堆表构建基本的 SQL-VIEW。这是一个快速概述

  • 我有一个 ClaimDetail 表,它有一些查找字段,如 StatusID、BrandID、SalespersonID 等。
  • 像往常一样,查找字段映射到主表,如 MasterStatus、MasterBrand、... {Structure: ID, Title}
  • 还有另外两个表评论和文件。一个声明可以有多个评论和多个文件。
  • 我需要显示一个仪表板,它将是一个索赔列表。我需要显示主表中的标题以及评论和文件的数量。

现在,我有这个仪表板的两个视图,一个是针对客户类型的用户的,它仅限于某些细节,另一个是针对内部用户的详细视图。您可以说客户视图是内部视图的子集。

我看到两个选项 -

  1. 选项#1:创建单个 vw_Internal 视图并使用它为两个用户获取数据。
  2. 选项#2:我创建了一个vw_Customer ,它只包含客户所需的那些字段,然后我创建一个vw_Internal,它类似于:vw_Customer INNER JOIN 主表。简而言之,我将扩展基本的 vw_Customer 以包含更多字段。

从速度和性能的角度来看,选项#2 是否有意义?选项#1 很简单,但考虑到大量记录,我想确保客户不必为那些不会包含在他们的仪表板中的额外查找等待更长的时间。

最后,我提到的最后一个功能有办法吗?这是获取与 ClaimDetail 表具有一对多关系的 Comments 和 Files 的计数。我只需要计数或至少一个布尔字段,它说明索赔是否有任何评论(文件相同) - 如果计数 = 0,则为假。我也担心此功能对性能的影响.

提前致谢。

0 投票
4 回答
1117 浏览

sql - 更新 sql 视图时出现问题

我在使用 sql 视图时遇到问题。我的实际观点包含几个连接,但出于我的问题的目的,我将用更小的例子来说明这个问题。

说我有意见……</p>

所以一切都很好。然后我将视图 A 更改为阅读…</p>

所以现在如果我写……</p>

它返回列IdColumn

但是,如果我写……</p>

它从视图 A 返回原始IdC列名

我试过sp_refreshview了,但这没有帮助。

如何让视图 B 从视图 A 返回更新的列名?

更新 **

好吧,我搞砸了原来的问题。我感谢大家的回复。我打算将视图 A 加入视图 B 中的表 B。看来视图 B 上的 alter 语句解决了这个问题。

0 投票
2 回答
134 浏览

sql-server - 从 DB2 查看到 SQL Server 2005

我正在尝试在 DB2 和 SQL Server 之间移动视图。

该视图可以在 DB2 中使用,但由于 WHERE 子句的存在而不能与 SQL Server 一起使用。我可以就如何重写此视图以使用 SQL Server 提出建议吗?

0 投票
4 回答
33697 浏览

sql-server - 带有连接表的 SQL 可更新视图

我有一个看起来与此类似的观点,

我正在尝试StaffPreferences.filter_type使用更新,

我在 MSDN 文章中读过这个,

任何修改,包括 UPDATE、INSERT 和 DELETE 语句,都必须仅引用一个基表中的列。

这是否意味着我只能更新 dbo.Staff 中的字段(这是我目前所能实现的)在这种情况下,“基表”的定义是否不会扩展到任何后续连接的表?

0 投票
2 回答
8558 浏览

mysql - 如何查看用于在 phpMyAdmin 或其他程序中创建视图的原始 MySQL?

如何在 phpMyAdmin 或其他程序中查看用于创建视图的原始MySQL?

我正在使用 phpMyAdmin 3.3.9 版。

这篇文章讲述了如何查看用于创建视图的 SQL,但它不是使用的原始 SQL。 如何使用 phpMyAdmin 3.2.4 编辑视图?

返回的代码有效,只是没有我的原始格式,因此更难编辑。是否有程序可以使这更容易,或者我需要将原始 SQL 保存在某个文本文件中吗?

例子:

使用的 SQL:

SQL phpMyAdmin 返回:

0 投票
3 回答
6844 浏览

domain-driven-design - 只读数据库视图如何适应存储库模式?

示例:您的数据库有一个名为“CustomerOrdersOnHold”的 SQL 视图。此视图返回特定客户和订单数据字段的过滤组合。您需要在应用程序中从此视图中获取数据。对这种视图的访问如何适应存储库模式?你会创建一个“CustomerOrdersOnHoldRepository”吗?像这样的只读视图是否被视为聚合根?

0 投票
3 回答
97573 浏览

sql - 使用存储过程创建视图

这个问题以前问过几次,不幸的是我没有得到我的问题的答案。

好吧,我有两个 SQL ( SQL SERVER 2008 ) 表,Employee 和 Employee expens,其中 Employee Id 分别是主键和外键。

员工表列,1. 员工 ID(P 键) 2. 经理 3. 位置 4. 加入日期 5. 姓名

Employee Expense 表列,1. Expense Id (P Key) 2. Employee Id (F key) 3. Expense Type 4. Expense Amount 5. Expense Date。

问题是,我想创建一个要在 SharePoint Web 部件中使用的视图,我将在其中查询两个表,所以我的要求是使用以下列创建一个视图,

从 Employee 我需要Employee Id 和 Name。从员工费用中,我需要费用类型、费用金额、费用日期

其他要求。

一个。如果我在员工费用表中有多个员工条目,那么视图中应该有很多行

湾。即使我在 Employee Expense 表中没有条目,那么我也应该在视图中获取该特定 Employee 的行,而 Employee Expense 表列的值为 null。

请帮我继续...

编辑按照 Stack Overflow 成员的指示添加所需的视图代码!

请帮忙。