mysql - MySQL - 带有 3 个表的 GROUP_CONCAT 的 LEFT JOIN - 未知列
问题描述
我正在尝试加入 3 个表并执行 GROUP_CONCAT,但得到
Unknown column 'program_outcome.program_outcome_pk' in 'field list'
询问:
SELECT program_outcome.program_outcome_pk,
program_outcome.program_outcome,
GROUP_CONCAT(program_outcome_unit_outcome_lookup.unit_outcome_pk) unit_outcome_pks,
GROUP_CONCAT(unit_outcome.unit_outcome) unit_outcomes
FROM program_outcome po
LEFT JOIN program_outcome_unit_outcome_lookup pouo
ON po.program_outcome_pk = pouo.program_outcome_fk
LEFT JOIN unit_outcome uo
ON pouo.unit_outcome_fk = uo.unit_outcome_pk
GROUP BY po.program_outcome_pk,
po.program_outcome
我正在寻找的结果如下:
+----------------------------------+--------------------------------------------------+
| program_outcome.program_outcome | unit_outcome.unit_outcome |
+----------------------------------+--------------------------------------------------+
| program outcome 1 | unit_outcome 2, unit_outcome 5 |
| program outcome 2 | unit_outcome 7, unit_outcome 1 |
| program outcome 3 | unit_outcome 1, unit_outcome 9, unit_outcome 11 |
+----------------------------------+--------------------------------------------------+
解决方案
您需要使用在您的from
和条款中定义的别名join
:
SELECT po.program_outcome_pk,
po.program_outcome,
GROUP_CONCAT(pouo.unit_outcome_fk) unit_outcome_pks,
GROUP_CONCAT(uo.unit_outcome) unit_outcomes
FROM program_outcome po
LEFT JOIN program_outcome_unit_outcome_lookup pouo
ON po.program_outcome_pk = pouo.program_outcome_fk
LEFT JOIN unit_outcome uo
ON pouo.unit_outcome_fk = uo.unit_outcome_pk
GROUP BY po.program_outcome_pk,
po.program_outcome
推荐阅读
- angularjs - 为什么 angularjs 过滤器的命名过滤器不适用于第一个元素?
- php - 将另一个 URL 添加到下载脚本中
- javascript - 将javascript变量分配给php代码的简单方法
- python - Python脚本自动下载gmail附件
- filter - 如何将 null 或空传递给 FetchXML 过滤器?
- r - R data.table fread:指定列数据类型
- php - 统计所有具有搜索功能的产品
- php - php 文件未连接到 azure 数据库(应用服务的 mySQL-in-app)
- scala - 配置 Spark 写入 HDFS 的 Avro 文件大小
- c++ - 模板缓冲区不绘制部分图块