我已阅读其他一些帖子,但他们都没有完全回复我的问题。
我设法生成以下选择:
SELECT regions.id, regions.name, auditoria_status from regions
LEFT OUTER JOIN regions regions_regions ON regions_regions.id = regions.parent_id
JOIN(
SELECT auditoria.entidade_id, auditoria.entidade_tipo, MAX(auditoria.status) AS auditoria_status
from auditoria GROUP BY auditoria.entidade_id, auditoria.entidade_tipo
) AS a
ON a.entidade_id = regions.id AND a.entidade_tipo = 'Terceiro' ORDER BY regions.id
这将正确列出我的所有区域。我希望auditoria_status给我带来auditoria.status的最大价值。
其中一个地区记录在auditoria表中有3个条目。一个状态为0,一个状态为1,第三个状态为2.我希望获得此区域ID,它的名称和2,因为它是auditoria_status,但是给了我0.
我的目标是列出所有地区(不重复),但只为该地区带来表会议审核的最高状态
修改
好的,这个SQL实际上有效,这里的虚拟人员输错了entidade_tipo条件,该条件应该是'Region'而不是'Terceiro'。所以,它的工作原理。
答案 0 :(得分:1)
你所做的就是加入你的子查询,你实际上并没有过滤它。
如果我正确理解你的问题,如果你需要的只是它的id,姓名和最大状态,你可以这样做:
SELECT
regions.*, a.max_status
FROM
regions
JOIN
(SELECT id, MAX(status) as max_status
FROM auditoria WHERE entidade_tipo = 'Terceiro'
GROUP BY id) AS a
ON
regions.id = a.id
ORDER BY regions.id