小编wog*_*and的帖子

为什么我不应该为多个关系使用一张表?

假设我的数据库中有多个关系,例如 Store、Employee 和 Sale,并且我想用简单的二元关系连接对。我个人会使用由外键组成的自然键创建名为 Employee_Store 和 Employee_Sale 的表。

现在,我的同事坚持为多个关系创建一张表。对于上面的示例,可能有一个名为 EmployeeLinks 的表:

EmployeeLinks(
    IdLink int PK, 
    IdEmployee int FK null,
    IdStore int FK null,
    IdSale int FK null,
    LinkType int not null
)
Run Code Online (Sandbox Code Playgroud)

请帮助我说明为什么这不是一个好主意的充分理由。我有自己的论点,但我想将它们保密并听取您的公正意见。

编辑:

最初上表没有主键 (!)。因为外键允许为空,所以代理键是唯一的选择。

database-design

14
推荐指数
2
解决办法
2650
查看次数

UPDATE 只有一行(使用更新和连接)

我正在尝试获得一个快速、简单的 sql 查询,以便在使用 join 时一次只更新一行。

我试过了LIMIT,但没有成功。

询问:

UPDATE
table1
JOIN
table2 ON table2.col=table1.col
SET 
table1.row1='a value'
WHERE
table1.row2 LIKE '%something%' 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

信息:

错误代码:1221. UPDATE 和 LIMIT 的错误用法

mysql join update limits

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

从 pgAdmin 4 获取插入查询

我正在使用 pgAdmin 4,并且希望将查询结果下载为INSERT语句而不是 CSV(我能找到的唯一选项)。我习惯用 MySQL Workbench 来做这件事,但也许我已经被宠坏了?

pgAdmin 4 是否可以将查询结果下载为INSERT语句?

postgresql pgadmin-4

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

过滤器连接或 Where 子句 TSQL

我应该将过滤器放在 TSQL 查询的什么位置?

SELECT a.colum FROM A 
JOIN B  ON A.ID =  B.ID AND B.STATUS  = 1
Run Code Online (Sandbox Code Playgroud)

或者

SELECT a.colum FROM A 
JOIN B  ON A.ID =  B.ID 
WHERE  B.STATUS  = 1
Run Code Online (Sandbox Code Playgroud)

我正在寻找性能问题或良好做法。

t-sql

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

如何从 table1 上的触发器将值插入 table2

我有 2 个带有列名的表WHO,我正在使用这 2 个表创建一个视图,其中FSwho.who = FStasks.who.

如果我在FStaskswhere 中输入一条新记录FStasks.who = LIZ,但我的FSwho.who表上没有记录,那么触发器应该插入LIZ到我的表中。

使用下面的代码,我得到的错误是

无法绑定多部分标识符“fs_tasks.WHO”。(我也试过inserted.who

我搜索了互联网,我遇到的大多数解决方案都是关于更改同一张桌子上的值。如何将值插入到完全不同的表中?

ALTER TRIGGER [dbo].[FS_TASKS_TRIG]
   ON  [dbo].[FS_TASKS]
   AFTER INSERT,UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

DECLARE @Action as char(1);
    SET @Action = (CASE 
        WHEN EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) THEN 'U'  -- Set Action to Updated.
        WHEN EXISTS(SELECT * FROM INSERTED) THEN 'I'  -- Set Action to Insert.
        WHEN EXISTS(SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

在特定日期/时间之间,当前字段和前一个字段之间差异的平均值

我正在尝试计算特定日期/时间之间当前字段和前一个字段之间差异的平均值。目前我有一个显示这个的查询,但我不确定我现在如何过滤它,以便我可以获得特定日期/时间之间“差异”列的平均值。(提前为我的 sql 技能或缺乏道歉。)

SELECT 
      S.Pair, 
      S.Date, 
      S.Time, 
      S.Bid, 
      S.Time, 
      ABS(S.Bid - T.Bid) as 'Diff'
FROM 
    dbo.Data as S
CROSS APPLY
           (
            SELECT TOP 1 T.Bid
            FROM
                dbo.Data as T
            WHERE
                 T.Id > S.Id
           ) as T
Run Code Online (Sandbox Code Playgroud)

任何指针将不胜感激。

编辑:

http://sqlfiddle.com/#!3/d4910/1

sql-server-2008 sql-server

0
推荐指数
1
解决办法
1798
查看次数

带有和不带有 SELECT 关键字的 UPDATE 语句

我一直在做一些关于SELECT从这个更新中删除关键字的测试:

Update  #tmpDriverTime
Set     WorkDay2 = (Select IsNull(Sum(PyblHrs),0)
From    spr_DriverTimeEntry
Where   spr_DriverTimeEntry.DrvrID = #tmpDriverTime.EmployeeNo
And     Convert(Varchar(12),dtwrkd,112) = Convert(Varchar(12),@StartDate_1,112))
Run Code Online (Sandbox Code Playgroud)

从我所做的测试来看,无论是否有SELECT关键字,都返回了相同的数据。我由我们的 DBA 运行代码以获得他删除SELECT语句的批准,他说我不能,因为删除SELECT语句会导致更新以不同的方式工作,但他无法阐明它的工作方式有何不同。我已经对新的进行了一些搜索,并找到了一些 MSDN 页面,他们在其中运行UPDATE FROM没有SELECT关键字的命令。所以现在我很困惑,我在 MSDN 上找到的测试和其他示例说我可以删除SELECT关键字,但我的 DBA 说不。删除SELECT关键字是否会影响UPDATE FROM工作方式,如果会,它会如何影响它?

sql-server-2005 sql-server t-sql update

0
推荐指数
1
解决办法
1116
查看次数