标签: sql-view

在实体框架中的 SQL 视图上使用外键

我对实体框架比较陌生。

我创建了一个包含两个表的数据库:AccountsAssignments

Accounts有一个AccountId主键,用作表中的外键Properties。我真的很喜欢实体框架自动获取外键关系,并允许我将行Assignments作为每行的属性进行访问Accounts

我继续创建了一个新的 View 对象,该对象返回所有列Accounts以及一些其他信息。但是,当我使用实体框架从 SQL 中的视图获取数据时,它不再自动引用表中的关联行Assignments

如何使用实体框架的视图获得所需的行为

sql entity-framework sql-view

4
推荐指数
1
解决办法
8636
查看次数

PostgreSQL 中带参数的 SQL 视图,防止运行时 SQL 错误的最佳方法?

PostgreSQL 中可以创建带有参数的视图吗?

问题是,我们的后端服务中可能存在未经验证的 SQL 语法,这可能会导致内部服务器错误,所以我可能需要将每个查询转换为视图?

像这样的东西:

query := ` --
   func Bla_ByType
SELECT id
  , data
    -
    >>
    'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)

上面的语法未被检测为错误,因为它只是一个字符串,正确的语法是:

query := ` -- func Bla_ByType
SELECT id
  , data->>'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)

上面的例子只是一个简单的查询,其他的则更长,如下所示:

WITH t AS (
   SELECT ...
   FROM 
   WHERE param1
) SELECT ... 
FROM ...
LEFT JOIN t 
WHERE param2`
Run Code Online (Sandbox Code Playgroud)

除了阅读课程之外还有其他选择吗:

CREATE OR REPLACE VIEW v_bla_bytype AS 
SELECT id
  , data->>'name'
FROM bla
WHERE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-view

4
推荐指数
1
解决办法
8430
查看次数

如何计算视图中的列数?- 甲骨文SQL

我正在尝试找出一种方法来计算 Oracle 视图中的列数。关于如何计算表中的列数有很多答案,但没有关于视图的答案。

数据库有很多很多视图,我必须对每个视图进行计数。以可以重复执行的查询形式找到解决方案是最有效的 - 手工计数在这里不起作用。

感谢您的任何帮助,您可以提供!

sql oracle sql-view

4
推荐指数
1
解决办法
5154
查看次数

选择查询比查看快2-3倍

此查询单独运行:

SELECT 
    -- lots of columns 
FROM 
    table1 t1
    LEFT JOIN table2 t2
        ON t2.[userid] = t1.[userid]
    LEFT JOIN table3 t3
        ON t1.[orderid] = t3.[orderid]
    LEFT JOIN table4 t4
        ON t4.[orderitemlicenseid] = t3.[orderitemlicenseid]
    LEFT JOIN table5 t5
        ON t1.[orderid] = t5.[orderid]
    LEFT JOIN table6 t6
        ON t5.[transactionid] = t6.[transactionid]
    LEFT JOIN table7 t7
        ON t7.[transactionid] = t5.[transactionid]
    LEFT JOIN table8 t8
        ON t8.[voucherid] = t7.[voucherid]
    LEFT JOIN table9 t9
        ON t8.[voucherid] = t9.[voucherid]
    LEFT JOIN table10 t10
        ON t10.[vouchergroupid] = …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-view

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

在Oracle中重命名视图

可能重复:
重命名Oracle表或视图

我知道你可以用

ALTER TABLE oldName RENAME TO newName;
Run Code Online (Sandbox Code Playgroud)

重命名表,但"ALTER"不能用于重命名视图.

在Oracle中重命名视图的语法是什么(如果有任何区别,我使用的是11g)?

sql oracle rename sql-view

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

如何使用存储过程删除mysql数据库中的所有视图?

我希望我的mysql服务器删除数据库中的所有视图.我已经为存储过程创建了一个事件:

开始

DECLARE done INT DEFAULT FALSE; 
DECLARE VIEW_NAME CHAR(255);
DECLARE VIEW_NAMES CURSOR FOR SELECT table_name FROM information_schema.views;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN VIEW_NAMES;

read_loop: LOOP    
    FETCH VIEW_NAMES INTO VIEW_NAME;
    IF done THEN
        LEAVE read_loop;
    END IF;    
    DROP VIEW VIEW_NAME;
END LOOP;

CLOSE VIEW_NAMES;
Run Code Online (Sandbox Code Playgroud)

结束

但是,此过程会产生以下错误:

错误代码:1051.未知表'view_name'

我的猜测是我的fetch语句由于某种原因没有获取.所以我检查了select语句,它确实有一个结果集.任何有关如何解决错误或如何在mysql数据库中删除所有视图的想法?

mysql stored-procedures sql-view

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

将MVC3模型映射到MSSQL 2008 View首先使用代码,然后使用数据库

在SQL Server 2008中,我有一个这样的视图:

CREATE VIEW products AS
   SELECT a.ID, a.Name, b.ID as SubID, b.Name as SubName
   FROM main_product as a 
   INNER JOIN sub_product as b on a.ID = b.mainID
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

Public class Products
{
    public int ID { get; set; }
    public int Name { get; set; }
    public int SubID { get; set; }
    public int SubName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我如何将MVC3的视图映射到SQL Server视图?

UPDATE

我试过这个:

 public class PartialContext : DbContext
 {       
     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework sql-view ef-code-first ef-database-first

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

创建视图使用多个表

嗨试图在oracle中创建一个视图.但是我的代码中出现错误,我无法解决如何解决问题.目前我正在尝试创建一个显示管理者的视图,他们的名字和名字也是他们分配的诊所.诊所的PK和诊所地址的FK所有地址都存储在该表中(是的,我知道它是不标准,但这是我选择这样做的方式)所以我也想显示他们工作的诊所的地址细节

当然这包括两个WHERE语句,我不确定如何实现第一个是STAFFJOBNAME"MANAGER"的地方

第二个是ADDRESSNO在两个表上匹配的地方

CREATE VIEW MANAGER AS
    SELECT STAFF.staffno,STAFF.staffFirstName,STAFF.staffLastName,CLINIC.clinicNo, CLINIC.addressNo
    FROM STAFF,CLINIC
    WHERE addressNo = 
    (
        SELECT addressNo, addressStreet, addressCity, addressCounty, addressPostcode, addressTelephone,
        FROM ADDRESS,
        INNER JOIN CLINIC,
        ON ADDRESS.addressNo = CLINIC.addressNo
    ) AND STAFF.staffJobName = 'MANAGER';
Run Code Online (Sandbox Code Playgroud)

我也有这个版本.所以我不确定哪一个更接近正确的一个.

CREATE VIEW MANAGER
(
    AS
    SELECT STAFF.staffno,STAFF.staffFirstName,STAFF.staffLastName,CLINIC.clinicNo, CLINIC.addressNo, ADDRESS.addressNo, ADDRESS.addressStreet, ADDRESS.addressCity, ADDRESS.addressCounty, ADDRESS.addressPostcode, ADDRESS.addressTelephone,
    FROM ADDRESS, STAFF,
    INNER JOIN CLINIC,
    ON ADDRESS.addressNo = CLINIC.addressNo
);
Run Code Online (Sandbox Code Playgroud)

sql oracle sql-view

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

数据库在从SQL视图访问数据时在MVC Web应用程序中抛出InvalidOperationException状态500

我正在开发一个Asp.Net MVC应用程序,其中我有一个包含五列的SQL视图,我有以下模型

public class InferredBid
    {
        public int Id { get; set; }
        public string Market { get; set; }
        public string Term { get; set; }
        public string Bid { get; set; }
        public string Offer { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

SQL视图

Create VIEW [dbo].[InferredBids]
AS
with numbered as
(
    select id, product, grade, term, bid, offer, termid, row_number() OVER (Partition BY Product, Grade ORDER BY termid) i
    from  dbo.CanadianCrudes
)

select r1.i as Id, r1.product + '/' + …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server asp.net-mvc sql-view

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

基于带有'WITH'子句的SELECT查看

我选择'WITH'子句:

with 
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2 from alias3 
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法创建视图:

create view ex_view as (
with 
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2 
from alias3
)
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此create语句时,'不支持使用WITH子句'

如何基于我的select语句创建视图?

sql oracle sql-view

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