[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