【发布时间】:2016-07-14 09:40:04
【问题描述】:
早安!
我有一个 MS Access 拆分数据库(尚未使用 ms sql server),它通过临时查询(想象中称为“temp”!)加入几个表。
SELECT table_CORE.[core-ID],
table_CORE.[PO],
table_CORE.[Part],
table_CORE.[Part Rev],
table_CORE.[Supplier Doc #],
table_CORE.[Sup Doc Rev],
table_DATES.[date-ID],
table_DATES.[iteration],
table_REJECTIONS.[rejection-ID],
table_REJECTIONS.[iteration],
table_REJECTIONS.[reason],
table_REJECTIONS.[details],
table_REJECTIONS.[timestamp]
FROM
(
(
table_CORE INNER JOIN [TEMP]
ON table_CORE.[core-ID] = TEMP.[date-ID]
)
INNER JOIN [table_DATES]
ON TEMP.[date-ID] = table_DATES.[date-ID]
AND TEMP.[iteration]=table_DATES.[iteration]
)
INNER JOIN table_REJECTIONS
ON TEMP.[date-ID] = table_REJECTIONS.[rejection-ID]
AND TEMP.[iteration]=table_REJECTIONS.[iteration]
WHERE table_CORE.[core-ID] Like '*'
所以最终,这会显示一个文档拒绝列表 - 这很好,除了每个文档适用于多个部分。
您可以绑定 PO、Part 和 Part Rev 以将这些拒绝合并到一个文档中 - 问题是我通常会使用 GROUP BY 子句来执行此操作...
...除了“详细信息”字段是备忘录数据类型,当您尝试使用 GROUP BY 子句时,访问会将其截断为 256 个字符。
任何想法如何解决这个问题?在将 group 子句加入拒绝表之前,我已经尝试过 group 子句,但我最终遇到了同样的问题(因为相同的 PO、Part Number 和 Revision 有多个拒绝) - 我正在调查其他方法,但我无法理解它所需的 SQL!
非常感谢!
如果您需要更多详细信息,请大声告诉我!
---更多细节---
例子:
ID PO Part Rev reason details
1 111 A1 A error some_details1
2 111 A1 A error some_details1
3 111 A1 A error some_details1
4 222 A1 A error some_details1
6 222 A1 A error some_details1
7 333 B1 A error some_details1
8 333 B1 A error some_details1
9 444 B1 A error some_details1
10 555 C1 A error some_details1
需要改成:
PO Part Rev reason details
111 A1 A error some_details1
222 A1 A error some_details1
333 B1 A error some_details1
444 B1 A error some_details1
555 C1 A error some_details1
关于连接功能如何工作的注意事项:
当前项目存储在 CORE 中,并通过 core-ID>>date-ID 以一对多关系绑定到日期,然后使用迭代来获取最近的事件在该部分的历史中。
然后使用 core-ID>>rejeciton-ID AND date-iteration>>rejectioniteration 将最近的事件加入拒绝列表以返回当前活动拒绝。
【问题讨论】:
-
为什么需要在详细信息字段上进行分组?您是否有查询失败的示例,是否有示例数据来显示您希望从查询中得到什么?
-
@dbmitch 这就是问题的症结所在——我们实际上有重复的拒绝,需要按采购订单/零件编号/修订进行分组——然后绑定到剩余的详细信息字段——但我不能让我了解仅针对 PO/Part/Revision 的 Group BY 子句,然后将其正确连接到详细信息字段。稍后将发布更多详细信息