Boa tarde pessoal!
Bem, estou com uma dúvida num select aninhado e não estou entendendo o erro. A questão é a seguinte:
Listar os clientes com os respectivos animais que foram diagnosticados com lepra.
Eu montei da seguinte forma:
SELECT
nom_cli
FROM
t_cliente
WHERE
cod_cli in (SELECT
cod_cli
FROM
t_animal
WHERE
cod_ani) in (SELECT
cod_ani
FROM
t_diagnostico
WHERE
cod_doe) in (SELECT
cod_doe
FROM
t_doenca
WHERE
nom_doe = 'lepra');
ERRO: argumento do WHERE deve ser do tipo boolean, e não do tipo integer
LINE 16: cod_doe) in (SELECT
^
********** Error **********
ERRO: argumento do WHERE deve ser do tipo boolean, e não do tipo integer
SQL state: 42804
Character: 181
pelo visto o problema e com o fechamento de parenteses, tente assim
SELECT
nom_cli
FROM
t_cliente
WHERE
cod_cli in (
SELECT cod_cli FROM t_animal WHERE cod_ani in (
SELECT cod_ani FROM t_diagnostico WHERE cod_doe in (
SELECT cod_doe FROM t_doenca WHERE nom_doe = 'lepra'
)
)
);
Boa dica Polverini. Identando fica mais fácil verificar.
Só postei para dar uma dica: Não sei como você está declarando o SQL no código, mas no caso de ter várias linhas para ficar mais legível, tente usar StringBuilder para evitar concatenações de Strings.