[firebase-br] Erro do FIREBIRD - Subselects

Marcos Thomaz (Prog_CPD) thomazs em ufac.br
Qua Dez 7 12:18:59 -03 2005


Tomando por exemplo a seguinte estrutura:

CREATE TABLE TESTE (
    ID     INTEGER,
    DEPTO  INTEGER,
    VALOR  DOUBLE PRECISION,
    DATA   DATE
);


Essa tabela, contém os seguintes valores:

INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (1, 1, 100, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (2, 1, 125, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (3, 1, 150, '2005-01-13');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (4, 1, 175, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (5, 1, 200, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (6, 1, 225, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (7, 2, 25, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (8, 2, 50, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (9, 2, 75, '2005-01-01');
INSERT INTO TESTE (ID, DEPTO, VALOR, DATA) VALUES (10, 2, 700,
'2005-01-01');


Se seu colocar a seguinte select:

SELECT FIRST 2 ID FROM TESTE WHERE (DEPTO=1) AND (VALOR < 200) ORDER BY ID

Me retorna corretamente 2 registros. Quando coloco assim:

SELECT * FROM TESTE
WHERE ID IN
(SELECT FIRST 2 ID FROM TESTE WHERE (DEPTO=1) AND (VALOR < 200) ORDER BY ID)

Deveria me retornar apenas 2 linhas certo? Porém me retorna todas as
linhas,não obedecendo ao FIRST 2.

Alguém, saberia dizer se esse erro já foi notificado?? E se foi, uma
previsão para essa correção??

Testei esse SQL nas versões 1.5.2 e 2.0 do Firebird.






Mais detalhes sobre a lista de discussão lista