2017-02-14 73 views
0

我有一个数据库,其中有一个联合查询正在为报表提供一些数据。这一直工作良好的一段时间,我不得不将表格中的字段从短文本切换到长文本与丰富的文本,以支持额外的字体选项。在这样做的时候,当我运行查询时,有问题的字段会返回有趣的字符。该表称为tbl_Process,字段为Process。我曾尝试在该领域设置索引,但这并没有帮助。我可以在联合查询方面摸索一点,但他们是一个弱点,我希望有人可以看看查询是否有任何建议。访问联合查询奇数字符。

SELECT tbl_Areas.Area_Detail AS Area, tbl_Areas.Product, tbl_Areas.Area_ID AS [Area Code], tbl_Areas.Revision AS [Area Book Revision], tbl_Processes.Group, tbl_Processes.Serial_Number AS [Process Serial Number], [Group] & "-" & [Product_Family] & [tbl_Products].[Size] & "-" & [tbl_Processes].[Serial_Number] & "-" & [tbl_Areas].[Area_ID] & "-" & [tbl_Processes]![Revision] AS [Document Name], tbl_Processes.Process, tbl_Processes.Revision AS [Process Revision], tbl_Finished_Product_Families.Common_Name AS [Product Family], tbl_Products.Size AS [Product Size], tbl_Models.Model_Definition AS [Product Model], tbl_ECN.Date_Published AS [ECN Date], Max(tbl_ECN.Revision) AS [ECN Revision], tbl_ECN.Engineer AS [Engineer of Record], tbl_Processes.Sequential_Position 
FROM (tbl_Models INNER JOIN (tbl_Finished_Product_Families INNER JOIN tbl_Products ON tbl_Finished_Product_Families.Finished_Product_Family = tbl_Products.Product_Family) ON tbl_Models.Model = tbl_Products.Model) INNER JOIN (tbl_ECN RIGHT JOIN (tbl_Areas INNER JOIN tbl_Processes ON tbl_Areas.Area_ID = tbl_Processes.Area) ON tbl_ECN.Serial_Number = tbl_Processes.Serial_Number) ON tbl_Products.Product_ID = tbl_Processes.Product 
GROUP BY tbl_Areas.Area_Detail, tbl_Areas.Product, tbl_Areas.Area_ID, tbl_Areas.Revision, tbl_Processes.Group, tbl_Processes.Serial_Number, [Group] & "-" & [Product_Family] & [tbl_Products].[Size] & "-" & [tbl_Processes].[Serial_Number] & "-" & [tbl_Areas].[Area_ID] & "-" & [tbl_Processes]![Revision], tbl_Processes.Process, tbl_Processes.Revision, tbl_Finished_Product_Families.Common_Name, tbl_Products.Size, tbl_Models.Model_Definition, tbl_ECN.Date_Published, tbl_ECN.Engineer, tbl_Processes.Sequential_Position 

UNION SELECT DISTINCT tbl_Areas.Area_Detail, tbl_Areas.Product, tbl_Areas.Area_ID, tbl_Areas.Revision, "OP Book" AS Expr1, Null AS Expr2, "OP-" & [Product_Family] & [tbl_Products].[Size] & "-0000-" & [tbl_Areas].[Area_ID] AS [Document Name], Null AS Expr4, Null AS Expr3, tbl_Finished_Product_Families.Common_Name, tbl_Products.Size, tbl_Models.Model_Definition, Null AS Expr5, Null AS Expr6, Null AS Expr7, 100 AS Expr8 
FROM (tbl_Models INNER JOIN (tbl_Finished_Product_Families INNER JOIN tbl_Products ON tbl_Finished_Product_Families.Finished_Product_Family = tbl_Products.Product_Family) ON tbl_Models.Model = tbl_Products.Model) INNER JOIN (tbl_Areas INNER JOIN tbl_Processes ON tbl_Areas.Area_ID = tbl_Processes.Area) ON tbl_Products.Product_ID = tbl_Processes.Product; 
+1

您可以尝试分别查看联合的每个片段,以查看奇数字符来自哪里 - 这听起来像它可能不仅仅是一个查询问题。 –

+0

我知道如果我建立一个查询来查看只是该字段,它会正确显示。我甚至把它拿走了,它会正确显示。出于某种原因,当我运行整个查询时,它只有这个字段有问题。我制作了数据库的测试副本,如果将字段切换回短文本,它将正常运行。问题是数据可能需要超过255个字符。 – vxd128

回答

0

下唐乔治的建议后,我发现,如果我换tbl_Processes.Process to First(tbl_Processes.Process) AS Process它正确显示的数据,并没有失去任何东西。我确实需要调整引用这个的一些查询,但现在一切正常。

1

当您在备注字段上执行聚合函数时,您可能会得到一些奇怪的结果。本页解释了这些问题http://allenbrowne.com/ser-63.html

+1

感谢您的链接,这明确解释了为什么发生这种情况,以及为什么将其切换为首先解决问题。 – vxd128