我需要以一种特定的方式连接MariaDB中的两个表。对于表A中的每个项目,我需要为目标1添加一列,为目标2添加一列。目标1和目标2的值是与表B中最高阶段的目标相关联的字段is_core的值,如示例所示。
在我的真实的问题中会有更多的目标,但为了简单起见,我在这里只使用了2个。
有没有人能帮上忙?我对DB不是很有经验,我的头在燃烧。
表A
| 身份证|姓名|
| - ------|- ------|
| 1个|项目A|
| 第二章|项目B|
| 三个|项目C|
表B
| 身份证|项目标识|物镜|是核心|相|
| - ------|- ------|- ------|- ------|- ------|
| 1个|1个|目标1|无|无|
| 第二章|1个|目标1|无|1个|
| 三个|1个|目标1|1个|第二章|
| 四个|1个|目标2|无|无|
| 五个|1个|目标2|无|1个|
| 六个|1个|目标2|无|第二章|
| 七|第二章|目标1|1个|无|
| 八个|第二章|目标2|无|无|
| 九|三个|目标1|无|无|
| 十个|三个|目标2|无|无|
TableA.id 链接到表B。项目Id
预期结果:
| 项目标识|姓名|目标1|目标2|
| - ------|- ------|- ------|- ------|
| 1个|项目A|1个|无|
| 第二章|项目B|1个|无|
| 三个|项目B|无|无|
非常感谢!
2条答案
按热度按时间sg24os4d1#
以下是使用条件聚集的一种方法:
我们必须稍微猜测一下,因为并不是100%清楚
project A
objective1
的三行如何Map到objective1
列中的值。此查询检查is_core以查找最新阶段:
krugob8w2#
如果目标的数量(以及最终列的数量)是不确定的(即您在PIVOT中需要),则使用动态SQL。