0

我编写了一个在 .NET 应用程序和 SQL Server 中运行良好的查询。

但是,当我使用宽参数进行测试时,我发现对于那个特定的,它没有在 .NET 应用程序中显示任何内容,而是在 SQL Server 中显示结果。

我试着google,没有结果,有点奇怪。所以,我在这里问。

这是我的查询:

 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 中运行良好。

谢谢。

4

2 回答 2

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 代码。另外,“没有结果”是什么意思?一个空的结果?超时?一个错误?

于 2013-02-12T02:20:19.283 回答
0

我在 xQbert 的评论的帮助下找到了解决方案。我花时间了解了查询是如何在 SQL Profiler 中执行的。表 tblProdus 中的 skuCode 是 nvarchar(6),表 tblProduct_BackOrder 中是整数。因此,我使用 Convert() 函数将相同参数转换为整数。

于 2013-02-15T01:49:23.360 回答