Erro em aninhamento de SELECT's

4 respostas
C

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');

4 Respostas

C

Ah o erro é esse:

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
P

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'
					)
				)
			);
C

Polverini com certeza deve ser isso.
Muito obrigado, cara.

G

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.

Criado 25 de outubro de 2013
Ultima resposta 25 de out. de 2013
Respostas 4
Participantes 3