小编C B*_*C B的帖子

SQL与FOREIGN KEY约束冲突

我试图在我的数据库上运行一些更新脚本,我收到以下错误:

ALTER TABLE语句与FOREIGN KEY约束"FK_UPSELL_DT_AMRNO_AFMKTG_REF"冲突.冲突发生在数据库"ECOMVER",表"dbo.AFFILIATE_MKTG_REF",列'AMRNO'中.

我正在运行以下脚本:

ALTER TABLE [dbo].[UPSELL_DATA]  WITH CHECK ADD 
        CONSTRAINT [FK_UPSELL_DT_AMRNO_AFMKTG_REF] FOREIGN KEY
        (
          [AMRNO]
        ) REFERENCES [dbo].[AFFILIATE_MKTG_REF] (
          [AMRNO]
        )
GO
Run Code Online (Sandbox Code Playgroud)

AMRNO是表AFFILIATE_MKTG_REF中的PK.

此外,我尝试使用SQL Management Studio中的修改表选项创建外键关系,我得到了同样的错误.我不确定我应该找什么?

任何建议将不胜感激.

sql sql-server-2005

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

分组时COUNT是不正确的?

我试图通过下表名为emp显示管理其他员工的每个员工的员工编号与他或她管理的人数.

empno  ename   job         mgr         hiredate    sal      comm       deptno
-----  ------  ----------  ----------  ----------  -------  -------    ------
7369   Smith   Clerk       7902        1980-12-17  800                 20
7499   Allen   Salesman    7698        1981-02-20  1600     300        30
7521   Ward    Salesman    7698        1981-02-22  1250     500        30
7566   Jones   Manager     7839        1981-04-02  2975                20
7654   Martin  Salesman    7698        1981-09-28  1250     1400       30
7698   Blake   Manager     7839        1981-05-01  2850                30
7782   Clark   Manager     7839        1981-06-09  2450                10
7788   Scott   Analyst     7566        1982-12-09  3000                20 …
Run Code Online (Sandbox Code Playgroud)

sql group-by

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

mysql SELECT COUNT(*)... GROUP BY ...不返回计数为零的行

SELECT student_id, section, count( * ) as total
FROM raw_data r
WHERE response = 1
GROUP BY student_id, section
Run Code Online (Sandbox Code Playgroud)

测试共有4个部分,每个部分都有不同的问题.我想知道,对于每个学生和每个部分,他们正确回答了多少问题(响应= 1).

但是,使用此查询,如果学生在给定部分中没有得到任何问题,那么我的结果集中将完全丢失该行.我怎样才能确保每个学生总共返回4行,即使一行的"总数"为0?

这是我的结果集的样子:

student_id  section     total
1           DAP--29     3
1           MEA--16     2
1           NNR--13     1  --> missing the 4th section for student #1
2           DAP--29     1
2           MEA--16     4
2           NNR--13     2  --> missing the 4th section for student #2
3           DAP--29     2
3           MEA--16     3
3           NNR--13     3 --> missing the 4th section for student #3
4           DAP--29     5 …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

SQL Server聚合非常大的表

我们有一个包含17Mil行的表,其中包含产品属性,让我们说它们是:

brandID,sizeID,colorID,price,shapeID

我们需要按品牌和大小查询聚合.目前我们通过执行以下操作来查询和过滤此数据:

select brandID, sizeID, count(*) 
from table where colorID in (1,2,3) and price=10 and shapeID=17
--"additional complex where clause here"
group by brandID, sizeID
order by brandID, sizeID
Run Code Online (Sandbox Code Playgroud)

我们报告这些数据.问题是,尽管返回的实际数据只有几百行,但运行此查询需要10秒左右(这是一个非常简单的示例).

我认为我们已经达到了索引此表的能力,因此我认为任何数量的索引都不会让我们接近即时结果.

我对OLAP或其他分析服务知之甚少,但SQL Server可以预先过滤或预先聚合此表,以便可以执行上述查询(或类似的返回等效数据)?或者在一个非常大的表上处理任意where子句的最佳方法是什么?

sql t-sql sql-server olap

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

非规范化数据(也许是一个转轴?)

我有一个包含学生编号和相应教师编号的简单表格,我需要对其进行非规范化以输入遗留系统.

例如,以下是数据现在的样子:


StudNumber  TeacherNumber
445        57315
445        88584
445        95842
858        88115
858        65443
858        57315
858        21144
858        18657
858        88584
311        64521
665        35512
665        57315
665        15546

我希望它看起来像这样,将每个教师分成一个单独的列,从左到右填充列.一个商业规则是每个学生的教师不超过六名:


StudNum Teacher1    Teacher2    Teacher3    Teacher4    Teacher5    Teacher6
445     57315       88584        95842
858     88115       65443        57315      21144        18657      88584
311     64521
665     35512       57315        15546

原始表中有10,000多行,因此我需要以编程方式执行此操作.谢谢!

sql t-sql sql-server sql-server-2008

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

计算列中的值

我要找的是分组并计算同一个表中不同数据的总数,并将它们显示在两个不同的列中.如下.

表A中的数据

领域:

Name    Type  
 Bob    1  
 John   2 
 Bob    1 
 Steve  1 
 John   1 
 Bob    2
Run Code Online (Sandbox Code Playgroud)

查询所需的结果:

Name   Type 1  Type 2
Bob    2       1
John   1       1
Steve  1       0
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2005

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

MySQL如何删除另一个表中的表中的记录

我有一张表A,附近有15000个条目.我有第二个表B,有7900个条目,带有表A的公共字段.

我需要从表A中提取到第三个临时表C中的所有条目,除了那些也出现在表B中的条目.虽然听起来很简单,但我还没有找到方法.我得到的最接近的是:

INSERT INTO tableC
SELECT * 
FROM tableA
    INNER JOIN tableB
        ON tableA.field IS NOT tableB.field
Run Code Online (Sandbox Code Playgroud)

这个SQL只选择tableA中的所有内容,甚至是tableB中的条目.

我出错的任何想法?

sql inner-join subtraction

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

具有多个连接的Oracle视图只能在使用引号时识别 - 为什么?

我在Oracle视图上执行sql查询时遇到了一个奇怪的行为.该视图包含多个连接.当我键入常规sql时:

select * from vView - I receive the error that view is not found
select * from "vView" - The query is executed. 
Run Code Online (Sandbox Code Playgroud)

我想知道为什么?

下面是我的sql:

 CREATE OR REPLACE FORCE VIEW "TMSCODE"."vCountEventsData" ("EV_ID_NUMBER", "SI_ID", "EV_YEAR", "EV_INS_DATE", "EV_REM_DATE", "EV_AADT_TOT", "EV_AADT_DIR1", "EV_AADT_DIR2", "EV_REPORT", "DIRECTION", "CNAME", "STATION_DESC") AS 
SELECT
"TMSCODE"."STC_EVENTS".EV_ID_NUMBER,
"TMSCODE"."STC_EVENTS".SI_ID,
"TMSCODE"."STC_EVENTS".EV_YEAR,
"TMSCODE"."STC_EVENTS".EV_INS_DATE,
"TMSCODE"."STC_EVENTS".EV_REM_DATE,
"TMSCODE"."STC_EVENTS".EV_AADT_TOT,
"TMSCODE"."STC_EVENTS".EV_AADT_DIR1,
"TMSCODE"."STC_EVENTS".EV_AADT_DIR2,
"TMSCODE"."STC_EVENTS".EV_REPORT,
"TMSCODE"."D_DIRECTION".DIRECTION,
"TMSCODE"."D_CONSULTANT".CNAME,
"TMSCODE"."D_STATION_TYPE".STATION_DESC
FROM
"TMSCODE"."STC_EVENTS"
INNER JOIN "TMSCODE"."D_DIRECTION" ON ("TMSCODE"."STC_EVENTS".EV_DIR = "TMSCODE"."D_DIRECTION".ID)
INNER JOIN "TMSCODE"."D_CONSULTANT" ON ("TMSCODE"."STC_EVENTS".EV_CONS = "TMSCODE"."D_CONSULTANT".ID)
INNER JOIN "TMSCODE"."D_STATION_TYPE" ON ("TMSCODE"."STC_EVENTS".EV_STATION_TYPE = …
Run Code Online (Sandbox Code Playgroud)

sql oracle view ora-00942

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