0

我读过其他一些帖子,但没有一个能完全回答我的问题。

我设法生成以下选择:

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 的最大值。

其中一个区域记录在观众席表中有 3 个条目。一个状态为 0,一个状态为 1,第三个状态为 2。我希望得到这个区域 id,它的名称和 2,因为它是 auditia_status,但给了我 0。

我的目标是列出所有区域(不重复),但只为该区域带来表厅的最大状态

编辑

好的,这个 SQL 确实有效,这里的假人输入错误的 entidade_tipo 条件应该是“Region”而不是“Terceiro”。所以,它有效。

4

1 回答 1

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
于 2013-01-04T17:14:11.773 回答