标签: sql-view

两个表中的数据到一个视图中

是否可以从两个表(具有相同字段)中将数据捕获到一个视图中.基本上,视图将数据视为一个表.

sql oracle sql-view

15
推荐指数
1
解决办法
7万
查看次数

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

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

SELECT  dbo.Staff.StaffId, dbo.Staff.StaffName, dbo.StaffPreferences.filter_type
FROM    dbo.Staff LEFT OUTER JOIN
        dbo.StaffPreferences ON dbo.Staff.StaffId = dbo.StaffPreferences.StaffId
Run Code Online (Sandbox Code Playgroud)

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

UPDATE vw_Staff SET filter_type=1 WHERE StaffId=25
Run Code Online (Sandbox Code Playgroud)

我在MSDN文章中读过这篇文章,

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

这是否意味着我只能更新dbo.Staff中的字段(这是我当前可以实现的)在这个上下文中,'base table'的定义是否扩展到任何后续连接的表?

编辑:这是MS SQL

sql-server view sql-view sql-update

15
推荐指数
2
解决办法
3万
查看次数

复杂查询的查看或存储过程?

我有一个有点复杂的查询与多个(嵌套)子查询,我想让应用程序开发人员使用它.该查询是通用的,并且在数据集的集合上生成具有计算值的视图,并且开发者预期仅需要来自查询返回的一些记录(即,它们将限制某个实体的ID或日期范围的结果或某些这样).

我可以看到实现这个的3种方法:

  1. 让开发人员将查询嵌入到每个应用程序中,并WHERE根据需要添加自己的子句.
  2. 创建一个存储过程,接受我期望开发人员需要的所有条件作为参数(为了让参数可以说我可以预测在可预见的未来将需要什么),并且该过程将运行复杂查询并过滤它根据传递的参数.
  3. 将查询实现为具有多个子视图的视图(因为MySQL不允许在视图中进行子查询),并让开发人员将其用作表,并用于WHERE让每个应用程序应用他们需要的过滤器.目前我正在寻找3个额外的子视图,主要是因为一些子查询被多次使用并且作为子视图执行它们可以防止重复 - 否则它可能会更糟;-).

明智的表现会更好吗?(假设在所有情况下所有索引都是等效的)如果可能,请选择最坏的情况.

你认为什么在代码维护方面会更好?

mysql performance database-design stored-procedures sql-view

13
推荐指数
1
解决办法
5917
查看次数

为什么SQL Server Views需要每隔一段时间刷新一次

为什么我必须编写"刷新视图"脚本,并在每次向视图添加或编辑某些字段时执行它们?

SQL Server知道在Management Studio中的花哨的视图编辑窗口中编辑它时需要刷新视图,那么为什么在通过脚本编辑视图后它不能只是告诉它的视图进行刷新?

sql-server refresh sql-view

12
推荐指数
2
解决办法
4万
查看次数

Microsoft SQL Server中视图占用的空间大小

我在SQL Server 2008中有一个非常大的表.它有许多字段,这些字段仅对某些用户段有用,某些用户不应该看到这些字段.

这个表很大,所以我想为每个用户类创建一些简单的视图,我可以让他们访问视图,他们只能看到他们需要的列.

视图是占用数据库中的空间,还是将其保存为简单的select语句?

sql-server sql-view

12
推荐指数
1
解决办法
8698
查看次数

SQL - CTE与VIEW

我在这里的问题是,是什么区别CTEViewSQL.我的意思是在哪种情况下我应该使用CTE和哪种情况View.我知道两者都是某种虚拟表,但我不能区分它们的用途.

我在这里发现了一个类似的问题,但它是关于性能的.

更新1:

例如:我有一个填充了trades(tbl_trade)的数据库.我需要从3.5百万条记录中选择当前时间到当前时间打开的交易然后操纵数据(在虚拟表上使用不同的查询 - 这看起来像View).这里的问题是我想要一个SUM3-4列,然后我需要SUM一些列并创建一个带有结果的虚拟列(看起来像CTE).

例如:tbl_trade有列:profit,bonusexpenses.我需要的SUM(profit),SUM(bonus),SUM(expenses)和新的一列total,这将是等于SUM(profit)+ SUM(bonus)+ SUM(expenses).

PS.重新运行查询SUM不是一个选项,因为我已经有了结果.

提前致谢!

sql sql-server common-table-expression sql-view

12
推荐指数
3
解决办法
1万
查看次数

将nvarchar转换为int以便在视图中连接SQL表

我想创建一个视图,它将显示由不同类型字段连接的两个表的信息.一个字段是nvarchar,另一个是int.我知道我需要在另一种类型中转换一种类型,但不知道该怎么做.任何帮助将不胜感激.

    SELECT dbo.co.co_num, dbo.pck_hdr.weight, dbo.STR_ShipTrack.TrackingNumber 
    FROM dbo.co 
INNER JOIN dbo.pck_hdr ON dbo.co.co_num = dbo.pck_hdr.co_num INNER JOIN dbo.STR_ShipTrack ON dbo.pck_hdr.pack_num = dbo.STR_ShipTrack.Reference1
Run Code Online (Sandbox Code Playgroud)

sql int nvarchar inner-join sql-view

11
推荐指数
1
解决办法
3万
查看次数

使用IN和子查询进行MYSQL更新

嗨我有这样的表:

表格条目:

id | total_comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0

表评论:

id | 开斋节 评论
_____________________
1 | 1 | 评论sdfd
2 | 1 | 测试测试
3 | 1 | 评论文本
4 | 2 | 虚拟评论
5 | 2 | 样本评论
6 | 1 | fg fgh dfh

我写的查询:

UPDATE entry 
   SET total_comments = total_comments + 1 
 WHERE id IN ( SELECT eid 
                 FROM comments 
                WHERE id IN (1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

表格条目:

id …

mysql subquery sql-view sql-update

10
推荐指数
1
解决办法
6万
查看次数

将表名前置到SQL结果集中的每一列?(Postgres具体)

如何获取结果集中每列的标签,以便在其表中添加名称?

我希望在单个表和连接上进行查询时发生这种情况.

例:

  SELECT first_name, last_name FROM person;
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

 | person.first_name | person.last_name |
 |-------------------|------------------|
 | Wendy             | Melvoin          |
 | Lisa              | Coleman          |
Run Code Online (Sandbox Code Playgroud)

我可以使用"AS"为每列定义别名,但这将是乏味的.我希望这会自动发生.

  SELECT first_name AS person.first_name, last_name AS person.last_name FROM person;
Run Code Online (Sandbox Code Playgroud)

我的问题的原因是我使用的数据库驱动程序不提供元数据,通知我结果集获取其数据的数据库列.我正在尝试编写通用代码来处理结果集.

我想知道如何在SQL中执行此操作,或者至少在Postgres中.

SQLite有这样一个功能,虽然我看到它现在被莫名其妙地弃用了.SQLite有两个pragma设置:full_column_namesshort_column_names.

sql postgresql dynamic-sql identifier sql-view

10
推荐指数
2
解决办法
6453
查看次数

电子商务店面网站:以编程方式发现类似产品

我正在开发一个店面Web应用程序.当潜在客户在网站上查看产品时,我想自动从数据库中建议一组类似的产品(与要求人员明确输入产品相似性数据/映射相比).

实际上,当您考虑它时,大多数店面数据库已经有很多可用的相似性数据.在我的情况下Products可能是:

  • 映射到Manufacturer(又名Brand),
  • 映射到一个或多个Categories,和
  • 映射到一个或多个Tags(aka Keywords).

Storefront Datamodel Snippet

通过计算产品与所有其他产品之间共享属性的数量,您可以计算"SimilarityScore",以便将其他产品与客户正在查看的产品进行比较.这是我最初的原型实现:

;WITH ProductsRelatedByTags (ProductId, NumberOfRelations)
AS
(
    SELECT  t2.ProductId, COUNT(t2.TagId)
    FROM    ProductTagMappings AS t1 INNER JOIN
                ProductTagMappings AS t2 ON t1.TagId = t2.TagId AND t2.ProductId != t1.ProductId
    WHERE   t1.ProductId = '22D6059C-D981-4A97-8F7B-A25A0138B3F4'
    GROUP BY t2.ProductId
), ProductsRelatedByCategories (ProductId, NumberOfRelations)
AS
(
    SELECT  t2.ProductId, COUNT(t2.CategoryId)
    FROM    ProductCategoryMappings AS t1 INNER JOIN
                ProductCategoryMappings AS t2 ON t1.CategoryId = t2.CategoryId AND t2.ProductId != t1.ProductId
    WHERE   t1.ProductId = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server indexing common-table-expression sql-view

10
推荐指数
1
解决办法
498
查看次数