我写了一个在.NET应用程序和SQL Server中都运行良好的查询。
但是,当我使用宽参数进行测试时,我发现对于那个特定的,它没有在.NET应用程序中显示任何内容但在SQL Server中显示结果。
我尝试谷歌,没有什么结果有点奇怪。所以,我在这里问。这是我的疑问:
SELECT DISTINCT
tblCustomers.customerID AS Customer#,
tblCustomers.firstName + ' ' + tblCustomers.surname AS Name,
tblCustomers.street AS Street,
tblCustomers.suburb AS Suburb,
tblCustomers.postCode AS Postcode,
tblCustomers.state AS State,
tblCustomers.country AS Country,
tblCustomers.phone AS [Phone No.],
tblCustomers.fax AS Fax,
tblCustomers.mobilePhone AS [Mobile Phone],
tblCustomers.email AS [E-mail]
FROM
tblCustomers
INNER JOIN
tblProduct_Backorder ON tblCustomers.customerID = tblProduct_Backorder.customerId
WHERE
(tblCustomers.customerID IN
(SELECT
customerId
FROM
tblProduct_Backorder AS tblProduct_Backorder_1
WHERE
(productId IN
(SELECT
productID
FROM
tblProducts
WHERE
(skuCode = 76761)
)
)
)
)
此查询不适用于skuCode = 76761
,但这个查询在SQL Server中正常工作。
感谢。
答案 0 :(得分:1)
你真的没有足够的信息让我们甚至开始猜测导致问题的原因。在平均时间尝试此而不是您的查询:
SELECT c.customerID AS [Customer#],
c.firstName + ' ' + tblCustomers.surname AS Name,
c.street AS Street,
c.suburb AS Suburb,
c.postCode AS Postcode,
c.state AS State,
c.country AS Country,
c.phone AS [Phone No.],
c.fax AS Fax,
c.mobilePhone AS [Mobile Phone],
c.email AS [E-mail]
FROM dbo.tblCustomers c
WHERE EXISTS ( SELECT 1
FROM dbo.tblProduct_Backorder b
JOIN dbo.tblProduct p
ON b.productId = p.productId
WHERE p.skuCode = 76761
AND b.customerId = c.customerId );
如果我正确理解了你的表关系,它会产生相同的结果,同时减少工作量。
对于您的原始问题,您还应该发布.net代码。另外,“没有结果”是什么意思?空结果?超时?错误?
答案 1 :(得分:0)
我在xQbert的评论的帮助下找到了解决方案。我花时间看了如何在SQL事件探查器中执行查询。表tblProduts中的skuCode是nvarchar(6),而表tblProduct_BackOrder是其Integer。所以,我使用Convert()函数将相同的参数转换为Integer。