我正在研究一个旧的应用程序和mysql数据库,遗憾的是它有点混乱。
我对导出所需的列感兴趣,该列包含特定文档的编辑器名称。此列中的值应以特定方式进行格式化,并且应该与当前不一致。
文档可以包含许多编辑器。我有一个包含所有不同编辑器的表,我需要将其与当前(格式不正确的)编辑器值进行匹配。我知道这不是执行此操作的最佳方式(应用程序当前的工作方式)但我需要将编辑器列格式化如下:
"Surname, Initial. and Surname, Initial. and Surname, Initial"
E.g:
"Bloggs, J. and Doe, J."
"Smith, M.J. and Bloggs, J. and Jones, P"
"Williams, S. and Smith, M.J. Doe, J."
然而,该列目前不符合实际格式:
"J Bloggs, J Doe"
"MJ Smith, J Bloggs and P Jones"
"Williams, S, M.J Smith. Doe, J."
等...
以下是我目前的表格:
文档:
| title | editors |
------------------------------------------------
| doc title 1 | J Bloggs, J Doe |
| doc title 2 | M Smith, J Bloggs and P Jones |
| doc title 3 | Williams, S, M Smith. Doe, J. |
Eitors :
| initial | name |
------------------------
| J. | Bloggs |
| J. | Doe |
| M.J. | Smith |
| P. | Jones |
| S. | Williams |
出于测试目的,我在Documents表中添加了一列(formatted_editors):
| title | editors | formatted_editors |
---------------------------------------------------------------------------------
我需要看到这样的内容:
| title | editors | formatted_editors |
---------------------------------------------------------------------------------
| doc title 1 | J Bloggs, J Doe | Bloggs, J. and Doe, J.
| doc title 2 | M Smith, J Bloggs and P Jones | Smith, M.J. and Bloggs, J. and Jones, P
| doc title 3 | Williams, S, M Smith. Doe, J. | Williams, S. and Smith, M.J. Doe, J.
我已经尝试了以下(和其他各种),但似乎没有运气 - 我认为这可能与我的分组有关?
SELECT d. title, d.editors, group_concat(e.name, ', ', e.initial SEPARATOR ' and ') as formatted_editors
FROM documents d
INNER JOIN editors e
ON d.editors LIKE concat('%', e.name, '%')
WHERE d.editors LIKE concat('%', e.name, '%')
and et.editors LIKE concat('%', e.initial, '%')
GROUP BY et.editors;
任何帮助/指示都将不胜感激,
答案 0 :(得分:0)
没有“真正的”可靠方法来解决这个问题......我使用了一些基本的SQL来修复/匹配我能做的事情,然后手动完成。
谢谢, 乔恩。