我们正在使用商业智能系统,需要加载日期列表,以便我们可以将它们标记为“上周”或“过去 12 个月”或某些动态值。
我想知道虚拟生成一个表的最简单方法是什么,该表仅在一列中列出日期,实际上是从“2014-01-01”到当前日期的每个日期(其他列我可以使用那里的公式)。实际上,甚至将未来的日期附加一年也可能很有用。
现在,是的,我可以从另一个具有数千个条目的随机事实表中获取不同的日期,但这似乎很草率,并且正在创建一种真正不应该存在的依赖关系。
我在尝试创建约束时遇到以下错误:
\n\n\n\n\n\n
Error creating foreign key (check data types)
问题是\xe2\x80\xa6 这些列数据类型确实匹配。
\n\n目标是 ,int(10) unsigned NOT NULL是PRIMARY列。\n同一个表中的源是int(10) unsigned DEFAULT NULL,而我尝试创建的约束是一个简单的ON DELETE RESTRICT, ON UPDATE CASCADE。
现在,当然目标是NOT NULL,源是NULL,但这完全是故意的,也是我所需要的,我看不出这怎么会成为问题。我可以理解如果是相反\xe2\x80\xa6
这真的是问题所在吗?为什么?那我该如何解决呢?我不想被迫在那里插入一个值,即使我不需要一个值,我也不想NULL在PRIMARY列上启用,这没有多大意义。
还有什么问题?
\n我正在使用 2 个相同的数据集。但是,一个来自临时表,另一个来自派生表(cross apply运算符)。派生表需要更长的时间来处理,而且它是一个简单的查询。我被告知要避免应用运算符,因为它们使用逐行处理。
我的问题:
apply操作员是否使用逐行处理?apply诸如游标和触发器语句之类的运算符吗?(仅在特定情况下使用)尊敬的 SQL Server 专家:
你能告诉我SQL-Server 2008 R2和SQL-Server 2012版本之间的区别吗?我用2008版设计了我的产品,但是当我尝试购买许可证时,微软表示他们不会再出售它,而是购买 2012 版。
所以我需要证明我们的系统可以在 2012 上运行。我知道它向后兼容,但我需要官方证明。请帮我。
我正在研究数据库的概念模型。我有以下实体:
Student (id, name, date of birth, department)
Subject (id, name)
Run Code Online (Sandbox Code Playgroud)
这是一个多对多的关系,一个学生可能报了很多门课,每门课都有很多学生。据我所知,因为我应该通过向实体中引入一个新事物来打破这种多对多关系,比如说“注册”,它允许一对一的关系或一对多的关系?
这是正确的设计决定吗?
我知道每个冲突可序列化的时间表都是可视图序列化的,但反之则不然。我在一个网页中读到,当日程表可查看序列化但不可冲突序列化时,则存在一些盲目写入。那么什么是盲写呢?
我正在学习数据库。在我非常简单的数据库中,我有 2 个表。
WorkingHoursDetail
ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)
和
WorkingHours
ID
Name
Run Code Online (Sandbox Code Playgroud)
如您所见,它们目前没有关联。
现在,我面临着将它们联系起来的问题。我知道我通过添加一个外键来做到这一点,比如 MyOtherTableID 并将其链接到其他表 ID。
在上面的示例中,我可以向 EITHER 添加外键
WorkingHoursDetail
ID
NameOfWeek
Hours
WorkingHoursId
Run Code Online (Sandbox Code Playgroud)
和
WorkingHours
ID
Name
Run Code Online (Sandbox Code Playgroud)
或者
WorkingHoursDetail
ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)
和
WorkingHours
ID
Name
WorkingHoursDetailId
Run Code Online (Sandbox Code Playgroud)
我试过这个,它似乎有效,但是这个选项让我害怕。是否有一个“正确”的答案,或者这种变化只会影响数据写入数据库的顺序。如果是这种情况,那么这肯定会决定使用它的程序的流程(用户 GUI)。
这是现实生活问题的简化版本。GetDate在子选择中使用时,计划更糟且不同。2个查询:
select * , (select count(1)
from hamsfa.customer as sub
where sub.tstamp_nosync > @old
and sub.cus_id > main.cus_id) as x
from hamsfa.customer as main ;
select * , (select count(1)
from hamsfa.customer as sub
where sub.tstamp_nosync > dateadd(year, -100, getdate())
and sub.cus_id > main.cus_id) as x
from hamsfa.customer as main ;
Run Code Online (Sandbox Code Playgroud)
我不完全理解的是为什么。
变量应该按我的理解变差。
还有另一个查询,这导致了几乎 700% 的差异(1s 与 7s)。
所以问题是:为什么一个变量会产生更好的计划,即使根据我的经验它应该更糟?
编辑:统计数据是最新且正确的
I'm using SQL Server Management Studio to generate sql script (big one)
to update Azure DB.
The problem is that the script is generated with IDENTITY on and the insert statements are exported with the ID column which as result gives me the errors :
Cannot insert explicit value for identity column in table 'Table_Name' when IDENTITY_INSERT is set to OFF.
My question is how to generate the script right that is will not use IDENTITY on and the insert.
我有以下数据:
| 机构_编号 | 信用类型 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
我有一个列表框,以便用户可以选择多个 Cred_type,他们希望能够选择 OR 或 AND 条件。
对于 OR 我有这样的 AND CRED_TYPE IN (1,2)
对于AND,我真是摸不着头脑。他们的意思是,他们想要一份具有cred type 1和cred_type 2的机构列表。也许我没有想清楚,但这是逐行的,所以这样做会导致没有结果。
AND cred_type = 1 AND cred_type = 2 -- 您不能让一行有两个不同的值,这将不会返回任何结果。
它们要求用户可以选择 10、20 或更多,因此为每个代码编写一堆代码并将它们组合起来非常困难 - 但这是我迄今为止唯一的想法。会是这样的
Select institution_no from table where cred_type = 1
UNION
Select institution_no from table where cred_type = 2
Run Code Online (Sandbox Code Playgroud)
-- 这会将两者结合起来并得到我想要的东西,但你可以想象其中 10 或 20 个的所有代码。
sql-server ×6
constraint ×1
cross-apply ×1
date ×1
innodb ×1
jobs ×1
license ×1
mysql ×1
oracle ×1
phpmyadmin ×1
ssms ×1
t-sql ×1
transaction ×1
view ×1