我有一个查询返回没有结果,尽管仍有大量行要处理。
SELECT O.[OrderLineId]
, O.[Article]
, O.[ArticleDescription]
, O.[QtyOrdered]
, O.[QtyDelivered]
, O.[BoxId]
, O.[Status]
, O.[Picker]
, O.[PickLocation]
, O.[Sorting]
, O.[DateCreated]
, O.[DateModified]
FROM [dbo].[PickBatch] P
INNER JOIN [dbo].[Boxes] B ON P.PickBatchId = B.PickBatchId
INNER JOIN [dbo].[OrderLines] O ON B.BoxId = O.BoxId
WHERE P.PickBatchId = @PickBatchId
AND (O.[Status] = @Status)
AND (O.[PickLocation] = (SELECT TOP(1) O.[PickLocation]
FROM [dbo].[PickBatch] P
INNER JOIN [dbo].[Boxes] B ON P.PickBatchId = B.PickBatchId
INNER JOIN [dbo].[OrderLines] O ON B.BoxId = O.BoxId
WHERE P.PickBatchId = @PickBatchId
AND O.[Status] = @Status
ORDER BY O.Sorting))
看起来子查询返回结果,同时状态被更改,以便主查询不返回任何结果。这可能吗?或者我犯了另一个错误?
当查询未返回任何结果时,系统会提示用户已选择所有内容,并且他可以启动新批处理。当他想要开始新的批次时,检查他是否没有开放批次。这会激发一些查询和此查询。然后查询返回结果。所以基本上查询是没有结果,秒。以后相同的查询返回结果。
答案 0 :(得分:0)
我想假设您的查询是准确的,但您不能在主查询和子查询中使用相同的别名。别名用于区分同一个表。所以在你的子查询中:
P
使用P2
B
使用B2
O
使用O2
因此。如果您的查询无效,请发布数据集和预期结果集
答案 1 :(得分:0)
您能为这些表描述主键吗?我认为子查询的问题总是返回一行但与主查询值不匹配。