Fórum Como filtrar grupo, subgrupo e classe? #44358

18/05/2004

0

Olá

Eu tenho 1 tabela de produtos no interbase que possue 3 campos: Grupo, subgrupo e classe.
Tenho que filtrar os produtos dando um valor inicial e final para cada um dos 3 campos. Até aí sem problemas.
O complicado é que tenho que selecionar os sugrupos e classes, seguindo a ´hierarquia´ do grupo selecionado. Seria + ou - assim:

Select * from produtos
where (grupo>1, subgrupo>10, classe>12) and (grupo<5, subgrupo<8, classe<2)

Ou seja, vai selecionar os produtos do grupo, subgrupo e classe 1, 10 e 12 até 5, 8 e 2. :?:
Alguém pode me ajudar? Estou precisando muito resolver este problema. :cry:

[ ]´s


Ivonei

Ivonei

Responder

Posts

19/05/2004

Afarias

Não ficou muito clara para mim a questão... algum exemplo mais explicativo??


T+


Responder

Gostei + 0

20/05/2004

Ivonei

Não ficou muito clara para mim a questão... algum exemplo mais explicativo??


Tenho a seguinte tabela:

Grupo Subgrupo Classe Codigo Produto
1 1 2 456 Pro1
1 4 6 889 Pro2
2 2 1 556 Pro3
2 8 5 655 Pro4
3 10 4 265 Pro5
3 11 6 872 Pro6

Quero filtrar os produtos do grupo 1 que tenha o subgrupo maior que 3 e classe maior que 4, até o grupo 2 que tenha o subgrupo menor que 3 e classe menor que 4.
Isto quer dizer que a query terá que pegar, por exemplo, o subgrupo menor que 3 apenas no grupo 2, não podendo influenciar nos subgrupo dos outros registros que tenham o subgrupo menor que 3.
O resultado teria que ficar assim:
Grupo Subgrupo Classe Codigo Produto
1 4 6 889 Pro2
2 2 1 556 Pro3


Os campos tem a seguinte estrutura:
´CODPRO´SMALLINT NOT NULL,
´GRUPRO´SMALLINT,
´SUBPRO´SMALLINT,
´CSEPRO´SMALLINT,
´DESPRO´VARCHAR(50),
CONSTRAINT ´PK_PROD´ PRIMARY KEY (´CODPRO´)

Espero que entendam a explicação e possam me ajudar, pois já estou há 2 dias nisto e até agora não consegui nada. :cry:

Até +


Responder

Gostei + 0

20/05/2004

Ivonei

Estou refazendo a tabela, pois os registros ficaram muito confusos de entender na msg anterior. Espero que fique melhor. :roll:
Grupo Subgrupo Classe Codigo Produto
...1...........1........... 2...... 456......Pro1
...1...........4............6.......889......Pro2
...2...........2............1.......556......Pro3
...2...........8............5.......655......Pro4
...3..........10...........4.......265......Pro5
...3..........11...........6.......872......Pro6


Responder

Gostei + 0

24/05/2004

Ivonei

up :roll:


Responder

Gostei + 0

24/05/2004

Afarias

A solução mais rápida q me ocorre é::


select * from nome_da_tabela
where (Grupo*1000000) + Subgrupo + (Classe/1000000)
between (1*1000000) + 3 + (4/1000000)
and (2*1000000) + 3 + (4/1000000);


onde:: 1000000 pode ser qualquer múltiplo de 10, que seja maior que o maior valor do Subgrupo e/ou Classe q possam existir.


T+


Responder

Gostei + 0

25/05/2004

Ivonei

A solução mais rápida q me ocorre é:: select * from nome_da_tabela where (Grupo*1000000) + Subgrupo + (Classe/1000000) between (1*1000000) + 3 + (4/1000000) and (2*1000000) + 3 + (4/1000000); onde:: 1000000 pode ser qualquer múltiplo de 10, que seja maior que o maior valor do Subgrupo e/ou Classe q possam existir.


Não é que esse cálculo funcina direitinho. :shock:
Como você consegue chegar nisso?

Muito obrigado. :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar