我如何条件一个HAVING查询?

问题描述 投票:0回答:1

我有以下查询:

select ctc.sentencia ,count(lg.id_libro) as cantidad
from cat_tipo_sentencia as ctc
left join libro_gobierno as lg on lg.cod_tiposentencia = ctc.id_sentencia
left join expedientes as e on e.id_expedientes = lg.cod_expediente
GROUP BY ctc.sentencia

我想计算“ cat_tipo_sentencia”的“ libro_gobierno”中的记录,但是在有条件的情况下,它不会向我显示具有0条记录的记录;在删除条件(如果它们显示时)时,我该如何进行条件处理,以便得出结果返回那些没有记录的?

-这是条件查询

select ctc.sentencia ,count(lg.id_libro) as cantidad
from cat_tipo_sentencia as ctc
left join libro_gobierno as lg on lg.cod_tiposentencia = ctc.id_sentencia
left join expedientes as e on e.id_expedientes = lg.cod_expediente
where e.cod_distrito= 130 
and e.cod_estado_pro=13
and ctc.id_sentencia in (1,8,10)
GROUP BY ctc.sentencia

并且当尝试使用“ HAVING”时,由于条件不在组中,因此出现错误

PD:对不起,英语,我正在使用翻译器:(

sql having
1个回答
0
投票
LEFT OUTER JOIN中,如果在WHERE子句中过滤外部表,则结果将与执行INNER联接时的结果相同。主表中在联接表中不匹配的行将被过滤掉。

您可以通过在联接的ON子句中而不是在WHERE子句中进行过滤来避免这种情况。

SELECT ctc.sentencia ,count(lg.id_libro) AS cantidad FROM cat_tipo_sentencia AS ctc LEFT JOIN libro_gobierno AS lg ON lg.cod_tiposentencia = ctc.id_sentencia LEFT JOIN expedientes AS e ON e.id_expedientes = lg.cod_expediente AND e.cod_distrito = 130 AND e.cod_estado_pro = 13 WHERE ctc.id_sentencia IN (1,8,10) GROUP BY ctc.sentencia

我尝试使用常用词。我希望这对您来说是可以的!
© www.soinside.com 2019 - 2024. All rights reserved.