Tenho 2 dúvidas assim:
SELECT c.id FROM component c, base_vee bv
WHERE
c.id IN (SELECT component_id FROM registry_row WHERE registry_id = 199)
AND
c.id = bv.component_id
AND
(bv.affidavit IS NULL OR bv.affidavit = '')
SELECT c.id FROM component c, base_vee bv
WHERE
c.id IN (SELECT component_id FROM registry_row WHERE registry_id = 199)
AND
c.id = bv.component_id
AND
(bv.affidavit IS NOT NULL AND bv.affidavit != '')
O que preciso obter é uma lista de IDs de componentes com False se bv.affidavit
estiver vazio ou True se não estiver vazio.
No momento, obviamente, estou obtendo duas listas de IDs de componentes para cada caso.
Funciona, mas uma consulta como a descrita acima seria melhor.
Use a
CASE
função:COALESCE permitirá que você se livre de muitas coisas interessantes quando estiver lidando com a situação de "se for nulo, faça uma coisa, caso contrário, faça outra".
COALESCE usa o primeiro argumento não nulo para usar, portanto, se bv.affidavit for NULL, ele usará '' em vez disso.