MS Access sql将5个表与列中的奇怪字符分组
Posted
技术标签:
【中文标题】MS Access sql将5个表与列中的奇怪字符分组【英文标题】:MS Access sql join 5 table with group by strange chars in columns 【发布时间】:2017-07-18 11:57:38 【问题描述】:我有一个奇怪的问题:我正在尝试使用 group by 获取一些统计信息
这连接了 5 个表,4 个表连接到一个 (T_Registo
) 基本上是为了获取 T_Registo 表上值的描述
我相信连接表没问题,但问题是当我添加 GROUP BY 部分时。
结果是除了一列之外的所有列中都有这个奇怪的字符:
table result
我使用不同的技术完成了查询,例如:
SELECT DateDiff("n",DataHora_inicio,DataHora_fim) AS tempo_registo,
T_Registo.Utilizador AS Utilizador,
T_Origem_Contacto.Nome_contacto,
T_Origem_Problema.Nome_problema,
T_Problema_PED.Nome_Problema_PED,
T_Indicador_resolucao.Resolucao_desc
FROM (((T_Registo INNER JOIN T_Problema_PED ON T_Registo.Problema_PED_ID =
T_Problema_PED.Problema_PED_ID)
INNER JOIN T_Indicador_resolucao ON T_Registo.Indicador_resolvido =
T_Indicador_resolucao.Indicador_resolvido)
INNER JOIN T_Origem_Problema ON T_Registo.Origem_problema_ID =
T_Origem_Problema.Origem_problema_ID)
INNER JOIN T_Origem_Contacto ON T_Registo.Origem_contacto_ID =
T_Origem_Contacto.Origem_contacto_ID
GROUP BY DateDiff("n",DataHora_inicio,DataHora_fim), Utilizador,
Nome_contacto, Nome_problema,
Nome_Problema_PED, Resolucao_desc;
也试过了....
SELECT DateDiff("n",DataHora_inicio,DataHora_fim) AS tempo_registo,
T_Registo.Utilizador AS Utilizador,
T_Origem_Contacto.Nome_contacto,
T_Origem_Problema.Nome_problema,
T_Problema_PED.Nome_Problema_PED,
T_Indicador_resolucao.Resolucao_desc
from
T_Registo,T_Problema_PED,T_Indicador_resolucao
,T_Origem_Problema,T_Origem_Contacto
where T_Registo.Problema_PED_ID = T_Problema_PED.Problema_PED_ID and
T_Registo.Indicador_resolvido = T_Indicador_resolucao.Indicador_resolvido
and T_Registo.Origem_problema_ID = T_Origem_Problema.Origem_problema_ID and
T_Registo.Origem_contacto_ID = T_Origem_Contacto.Origem_contacto_ID
GROUP BY DateDiff("n",DataHora_inicio,DataHora_fim), Utilizador,
Nome_contacto, Nome_problema,
Nome_Problema_PED, Resolucao_desc
但结果是一样的。
我已经改变了连接的顺序和添加,减去列但结果仍然不好,甚至认为它似乎有一些影响,例如
在上面的示例列中,Nome_contacto 似乎是正确的,但如果订单发生变化,则 Nome_contacto 列是错误的并且 Utilizador 是好的……。
只是为它添加一些奇怪的元素:-)
你能帮忙吗?这很奇怪,我已经尝试了我能记住的一切,甚至迁移到显然可以正常工作的 SQL Server
【问题讨论】:
您介意格式化您的问题,以便于阅读吗? 【参考方案1】:1) 如果不使用任何聚合函数,为什么还要使用GROUP BY
?
2) 您的描述栏很可能是备注/长文本。
https://bytes.com/topic/access/answers/849295-access-getting-chinese-character-unexpectedly-why
原因包括: a)您在查询中按备注字段分组,该查询具有未索引的连接 字段:http://allenbrowne.com/bug-18.html
解决方法
以下任一方法都可以解决该错误:
不要按备注字段分组。而是在备注字段下的总计行中选择第一个。这不仅避免了错误,而且执行效率更高,而且还允许 JET 返回整个备注字段,而不是将其截断为 255 个字符。 索引 JOIN 中涉及的字段。 或者,像您所做的那样,将数据类型更改为(短)文本。 :)【讨论】:
谢谢安德烈。由于某种原因,当从 sql server 导出数据库时,某些字段的数据类型为 memo.我只需要将其更改为文本....它就可以了 如果答案解决了您的问题,您可以accept it,这也将问题标记为已解决。 @LuisFerreira 将字段更改为短文本......就像一个魅力。非常感谢以上是关于MS Access sql将5个表与列中的奇怪字符分组的主要内容,如果未能解决你的问题,请参考以下文章
MS Access SQL 查询 - 将所有表与多个表联合 - 重复字段
MS Access JOIN 访问表与 SQL Server 表
在 MS Access 或 SQL Server 中查找 2 个表之间的差异