Fórum Como filtrar grupo, subgrupo e classe? #44358
18/05/2004
0
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
Curtir tópico
+ 0Posts
19/05/2004
Afarias
T+
Gostei + 0
20/05/2004
Ivonei
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é +
Gostei + 0
20/05/2004
Ivonei
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
Gostei + 0
24/05/2004
Ivonei
Gostei + 0
24/05/2004
Afarias
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+
Gostei + 0
25/05/2004
Ivonei
Não é que esse cálculo funcina direitinho. :shock:
Como você consegue chegar nisso?
Muito obrigado. :D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)