Busca Código não cadastrado

Firebird

03/01/2014

Olá pessoal. Boa Tarde.

Estou precisando de fazer uma consulta em uma tabela dos códigos que não foram cadastrados. exemplo:

codigo | nome

0001 pao
0002 sabao
0004 leite
0005 bolacha
0008 uva
0009 feijao

nesse caso preciso que na consulta me retorne somente os códigos 0003, 0006 e 0007. (não cadastrado) Já tentei fazer sql com o NOT EXISTS mais não obtive êxido. Alguem possui alguma sugestão. Obrigado a todos.
Leandroptu

Leandroptu

Curtidas 0

Respostas

Douglas

Douglas

03/01/2014

Olá Amigo, faça o seguinte código abaixo:


SELECT * FROM TABELA
WHERE CODIGO IN (0003, 0006 e 0007)



OBS: O select acima é apenas um exemplo.

GOSTEI 0
Leandroptu

Leandroptu

03/01/2014

Amigo,

Boa Tarde,

Entendi a ideia da sua resposta, mais o meu problema é identificar a inexistência do 0003 e demais.

Obrigado
GOSTEI 0
Douglas

Douglas

03/01/2014

Amigo,

Boa Tarde,

Entendi a ideia da sua resposta, mais o meu problema é identificar a inexistência do 0003 e demais.

Obrigado


Leandro,

Coloque a claúsula Not antes do in, daí irá resultar todos os códigos que não estive entre o que
você escolheu.

SELECT * FROM TABELA
WHERE CODIGO NOT IN (0003, 0006 e 0007)


Aguardo FeedBack.
GOSTEI 0
Douglas

Douglas

03/01/2014

Amigo,

Boa Tarde,

Entendi a ideia da sua resposta, mais o meu problema é identificar a inexistência do 0003 e demais.

Obrigado


Leandro,

Coloque a claúsula Not antes do in, daí irá resultar todos os códigos que não estive entre o que
você escolheu.

SELECT * FROM TABELA
WHERE CODIGO NOT IN (0003, 0006 e 0007)


Aguardo FeedBack.


Amigo uma correção.
O meu código do select esta errado favor corrigir colocando conforme mostrado abaixo:

WHERE CODIGO NOT IN (0003, 0006, 0007)


Me desculpe.
GOSTEI 0
Thiago Irrazabal

Thiago Irrazabal

03/01/2014

Boa tarde, fiz uma procedure de "exemplo" veja se te serve, abraço.

SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_BUSCA_CODIGO
RETURNS (
  CODIGOS BLOB SUB_TYPE 1 SEGMENT SIZE 120)
AS
DECLARE VARIABLE COD INTEGER;
DECLARE VARIABLE MAX_CODIGO INTEGER;
DECLARE VARIABLE MIN_CODIGO INTEGER;
BEGIN
  SELECT MAX(CODIGO) FROM CAD_PRODUTO
    INTO :MAX_CODIGO;

  SELECT MIN(CODIGO) FROM CAD_PRODUTO
    INTO :MIN_CODIGO;

  WHILE (:MIN_CODIGO <= :MAX_CODIGO) DO
    BEGIN
      SELECT CODIGO FROM CAD_PRODUTO
        WHERE CODIGO = :MIN_CODIGO INTO :COD;

        IF (:COD = 0) THEN
          IF (CODIGOS IS NULL) THEN
            CODIGOS = CAST(MIN_CODIGO AS VARCHAR(10));
          ELSE
            CODIGOS = CODIGOS || ', ' || CAST(MIN_CODIGO AS VARCHAR(10));

        MIN_CODIGO = MIN_CODIGO + 1;

        COD = 0;
    END
  SUSPEND;
END^

SET TERM ; ^

GRANT SELECT ON CAD_PRODUTO TO PROCEDURE SP_BUSCA_CODIGO;

GRANT EXECUTE ON PROCEDURE SP_BUSCA_CODIGO TO SYSDBA;





Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
POSTAR