SQL查询中通过两次关联同一张表获取不同字段值的问题
解决方案
你需要对cadastro_motivos表进行两次INNER JOIN,并给每次关联的表指定不同的别名,以此区分两个关联逻辑。修改后的SQL语句如下:
select refugo.id, cm_defeito.motivo as defeito, cm_causa.motivo as causa, refugo.op_producao, refugo.quantidade, maquina.nome, to_char(refugo.data, 'DD/MM/YY HH24:MI:SS') as data_formatada from refugo inner join cadastro_motivos cm_defeito on refugo.id_motivo = cm_defeito.id inner join cadastro_motivos cm_causa on refugo.id_motivo2 = cm_causa.id inner join maquina on maquina.id = refugo.id_maquina order by refugo.id asc
关键说明:
- 给
cadastro_motivos表设置两个不同的别名:cm_defeito(对应缺陷关联)和cm_causa(对应原因关联) - 第一次关联用
refugo.id_motivo匹配cm_defeito.id,提取motivo作为defeito - 第二次关联用
refugo.id_motivo2匹配cm_causa.id,提取motivo作为causa - 可选:给格式化后的日期字段加上别名(比如
data_formatada),让结果可读性更强
内容的提问来源于stack exchange,提问作者Rocillo
相关产品推荐
相关产品推荐

