考虑以下:
我有两个表(Customers和Cases)定义如下:
**Customers**
CustomerId (PK)
CustomerName
CustomerPhone
**Cases**
CaseId (PK)
CaseManager
CaseNotes
Run Code Online (Sandbox Code Playgroud)
每个客户可以拥有无限量的案例,但每个案例只能属于一个客户.因此,为了将表相互关联,我将使用一个交集表(CustomerCases),它分别由每个表中的外键组成.
但是,我不能只将Customers表中的CustomerID作为Cases表的外键添加吗?我觉得我错过了什么.如果我选择不使用交叉表,是否有任何陷阱我应该注意?
由于导入到名为CUSTOMERS的测试表时出错,我发现自己需要在SQL Server中切换两列的值.
我错误地将LASTNAME和FIRSTNAME的相应值导入相反的字段(即客户姓氏被导入名字,反之亦然).为了解决这个问题,我在SQL Server 2008 R2中运行了以下查询,当然不希望它工作:
UPDATE CUSTOMERS
SET LASTNAME=FIRSTNAME, FIRSTNAME=LASTNAME
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,它奏效了!我所拥有的有限的编程经验(高中,一些大学课程)总是遵循这样的范例:切换两个值需要存在第三个变量来"保持"其中一个初始值的值.换句话说,我预计必须运行以下查询:
UPDATE CUSTOMERS
SET SOMEOTHERFIELD = LASTNAME
SET LASTNAME = FIRSTNAME
SET FIRSTNAME = SOMEOTHERFIELD
Run Code Online (Sandbox Code Playgroud)
这种行为只出现在SQL Server 2008 R2中,还是代表了我缺少的关系理论的其他一些基本方面?
我正在从.net应用程序调用存储过程,该过程将记录插入数据库.但是,我需要获取我刚刚成功插入的记录列表.
我知道我可以直接从存储过程返回插入的行,但我希望有一种方法可以在C#中以编程方式执行此操作.
是否可以实现SQLDataReader类以实现此功能,即从插入/删除的表中读取?或者是否有其他类可以容纳此请求?
是否可以在C#控制台应用程序中响应HTTP POST请求?如果是这样,怎么样?我认为它可能涉及使用套接字(我对此知之甚少).任何帮助将不胜感激!
我正在尝试使用以下sql来检索收到的总金额,以及从3个表中销售的总金额:
select ITEMS.ITEM_NO, SUM(RECEIVINGS.QTY_RECVD), SUM(SALES.QTY_SOLD)
from ITEMS
left join RECEIVINGS
on ITEMS.ITEM_NO = RECEVINGS.ITEM_NO
left join SALES
on ITEMS.ITEM_NO = SALES.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
Run Code Online (Sandbox Code Playgroud)
上面的查询返回的数据比实际值大几个数量级.但是,如果我把它分成两个查询:
select ITEMS.ITEM_NO, SUM(RECEIVINGS.QTY_RECVD)
from ITEMS
left join RECEIVINGS
on ITEMS.ITEM_NO = RECEVINGS.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
select ITEMS.ITEM_NO, SUM(SALES.QTY_SOLD)
from ITEMS
left join SALES
on ITEMS.ITEM_NO = SALES.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
Run Code Online (Sandbox Code Playgroud)
它完美地运作.是什么赋予了?是否有任何原因加入所有三个表的第一个查询将无法工作,但两个单独的查询将?
考虑以下数据模型:
顾客
CustNum | First Name | Last Name
555 John Doe
Run Code Online (Sandbox Code Playgroud)
CustomerAddresses
CustNum | ShippingAddress| Line1 | Line2 | City | State | Zip
555 | ADD1 | 333 A Dr. | Apt. 10 | Dallas | TX | 11345
555 | ADD2 | 111 B St. | NULL | Miami | FL | 22222
555 | WXYZ | 123 Main St. | NULL | Detroit | MI | 99998
Run Code Online (Sandbox Code Playgroud)
OrderHeader
OrdNum | CustNum | OrderTotal | Line1 | …Run Code Online (Sandbox Code Playgroud) 我为"菜鸟"问题提前道歉,但我在SQL的大多数方面仍然是一个新手.我的问题源于SQL的艺术第二章的一部分.在标题为"稳定数据库连接"的段落中,作者提到了将大量行插入数据库的几种方法.这是格式中的相应列表
Test; Results Connect/Disconnect for each line in turn; 7.4 lines loaded per second Connect Once, all candidate lines individually inserted; 1,681 lines loaded per second Connect Once, all candidate lines inserted in arrays of 10 lines; 5,914 lines inserted per second Connect Once, all candidate lines inserted in arrays of of 100 lines; 9,190 lines inserted per second
此外,作者还提到了"更快的直接加载技术".
不幸的是,我并不完全理解插入数组的想法(如果有的话).在插入数组和他引用的其他"直接加载技术"方面,有没有人可以详细说明作者所指的技术?
我有以下表格,其中包含SQL Server 2008 R2中的客户和购买数据:
顾客
CustId Last First Phone
1 Doe John 555-5555
2 Smith Sally 444-4444
3 Smith Greg 222-1212
Run Code Online (Sandbox Code Playgroud)
Order_Header
OrderId CustId Date
1001 3 07/08/2011
1002 2 07/19/2011
1003 2 03/12/2012
1004 1 03/14/2012
1005 3 03/20/2012
1006 1 04/17/2012
1007 2 06/04/2012
1008 1 08/04/2011
Run Code Online (Sandbox Code Playgroud)
ORDER_LINES
OrderId Sequence Item Type Manufacturer Price
1001 1 WIDGET C WidgCo 12.00
1001 2 SWITCH C SwitchCo 10.00
1002 1 RADIO A RadSupply 30.00
1002 2 CRT A CRT&More 31.00 …Run Code Online (Sandbox Code Playgroud)