【发布时间】:2020-10-02 23:58:39
【问题描述】:
我有如下 3 个表
**tbl_link**
╔═════════════╦═══════════════╦═══════════════╗
║ subject_id ║ system_csv_id ║class_csv_id ║
╠═════════════╬═══════════════╬═══════════════╣
║ 1 ║ 4,3 ║ 5,1,3,4 ║
║ 2 ║ 1,3 ║ 2,3 ║
╚═════════════╩═══════════════╩═══════════════╝
**tbl_system** **tbl_class**
╔═══════════╦════════════════════╗ ╔═══════════╦════════════════════╗
║ system_id ║ system_desc ║ ║ class_id ║ class_desc ║
╠═══════════╬════════════════════╣ ╠═══════════╬════════════════════╣
║ 1 ║ ANY ║ ║ 1 ║ GRADE 8 ║
║ 2 ║ LOCAL SYSTEM ║ ║ 2 ║ GRADE 9 ║
║ 3 ║ BRITISH SYSTEM ║ ║ 3 ║ GRADE 10 ║
║ 4 ║ AMERICAN SYSTEM ║ ║ 4 ║ GRADE 11 ║
╚═══════════╩════════════════════╝ ║ 5 ║ GRADE 12 ║
╚═══════════╩════════════════════╝
我想查询 tbl_link 并关联 'system_csv_id' -> 'system_desc' 和 'class_csv_id, -> 'class_desc' 以达到以下输出。
╔═════════════╦═══════════════════╦═════════════════════════════════════════╗
║ subject_id ║ system ║ class ║
╠═════════════╬═══════════════════╬═════════════════════════════════════════╣
║ 1 ║ AMERICAN,BRITISH ║ GRADE 12, GRADE 8, GRADE 10, GRADE 11 ║
║ 2 ║ ANY, BRITISH ║ GRADE 9, GRADE 10 ║
╚═════════════╩═══════════════════╩═════════════════════════════════════════╝
我进行了一些搜索以找到解决方案。我得到的只是这可以使用(CONCAT 或 GROUP_CONCAT)和 ON FIND_IN_SET() 来实现,但由于我的 SQL 知识非常有限,我无法实现所需的输出。
任何帮助将不胜感激。
【问题讨论】:
-
这是 2 个常见问题解答——摆脱 CSV 并引入 CSV。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。请在代码问题中给出minimal reproducible example--包括剪切、粘贴和可运行示例。
标签: mysql left-join group-concat find-in-set