Caso sem solução a três semanas
A três semanas que eu posto tópicos aqui e em outros locais, já procurei ajuda dos colegas do msn, icq e ninguem soube me dar uma solução concreta meu caso e o seguinte.
Tenho um tabela pai
MECD INTEGER NOT NULL, COD
MEDS DESCRICAO /* VARCHAR(50) */ DESCRIÇÃO
Tabela filha
MDME INTEGER NOT NULL, TABELA PAI
MDPD INTEGER NOT NULL, TABELA DE PRODUTO
MDDS DESCRICAO /* VARCHAR(50) */, DESCRIÇÃO AUTERNA
MDVV VALOR /* NUMERIC(15,4) */, VALOR...
MDVE VALOR /* NUMERIC(15,4) */,
MDBI VARCHAR(10),
MDDA DATE,
MDCX VARCHAR(15) CHARACTER SET NONE
Tenho que mostrar um grid com a consulta da tabela filha tenho que passar dois parametros
Se não tiver na tabela pai 1 MDME então verificar se tem na 2 MDME e mostrar se for o caso, eu tentei diversas maneiras
View, procedure, select normal e nada no ultimo caso eu chegie bem perto mas não consegui
/procedure
FOR SELECT DISTINCT MDPD FROM especifica_med_detalhe EMD
WHERE ((MDME=:TAB1) or (MDME=:TAB2))
into :CODMED DO
suspend;
Até aqui ele me retorna bacana porem quando dou o select com um join na mesma tabela para recuperar o valor, descrição...
/Select com join
select CODMED, PDDS from PROCEDMATMAD (0,2)
INNER JOIN PRODUTO PDT ON (PDT.PDCD=CODMED)
INNER JOIN especifica_med_detalhe EMD ON (EMD.MDPD=PDT.PDCD)
ele volta a me retornar dois produtos novamente
[b:b15bd3353b]heeeeeeeeeeeeelllllllllllllppppppppppppp............[/b:b15bd3353b]
:( :( :( :( :cry: :cry: :cry: :( :( :( :(
Tenho um tabela pai
MECD INTEGER NOT NULL, COD
MEDS DESCRICAO /* VARCHAR(50) */ DESCRIÇÃO
Tabela filha
MDME INTEGER NOT NULL, TABELA PAI
MDPD INTEGER NOT NULL, TABELA DE PRODUTO
MDDS DESCRICAO /* VARCHAR(50) */, DESCRIÇÃO AUTERNA
MDVV VALOR /* NUMERIC(15,4) */, VALOR...
MDVE VALOR /* NUMERIC(15,4) */,
MDBI VARCHAR(10),
MDDA DATE,
MDCX VARCHAR(15) CHARACTER SET NONE
Tenho que mostrar um grid com a consulta da tabela filha tenho que passar dois parametros
Se não tiver na tabela pai 1 MDME então verificar se tem na 2 MDME e mostrar se for o caso, eu tentei diversas maneiras
View, procedure, select normal e nada no ultimo caso eu chegie bem perto mas não consegui
/procedure
FOR SELECT DISTINCT MDPD FROM especifica_med_detalhe EMD
WHERE ((MDME=:TAB1) or (MDME=:TAB2))
into :CODMED DO
suspend;
Até aqui ele me retorna bacana porem quando dou o select com um join na mesma tabela para recuperar o valor, descrição...
/Select com join
select CODMED, PDDS from PROCEDMATMAD (0,2)
INNER JOIN PRODUTO PDT ON (PDT.PDCD=CODMED)
INNER JOIN especifica_med_detalhe EMD ON (EMD.MDPD=PDT.PDCD)
ele volta a me retornar dois produtos novamente
[b:b15bd3353b]heeeeeeeeeeeeelllllllllllllppppppppppppp............[/b:b15bd3353b]
:( :( :( :( :cry: :cry: :cry: :( :( :( :(
Sremulador
Curtidas 0
Respostas
Afarias
12/03/2004
|A três semanas que eu posto tópicos aqui e em outros locais
? é ? 1ª vez q vejo esta questão
|Se não tiver na tabela pai 1 MDME então verificar se tem na 2 MDME e
|mostrar se for o caso, eu tentei diversas maneiras
vc tem q explicar melhor... não entendi nada!!!
|select CODMED, PDDS from PROCEDMATMAD (0,2)
|INNER JOIN PRODUTO PDT ON (PDT.PDCD=CODMED)
|INNER JOIN especifica_med_detalhe EMD ON (EMD.MDPD=PDT.PDCD)
|ele volta a me retornar dois produtos novamente
hummm... o problema está aqui!! Certo, ele retorna 2 produtos novamente... e deveria retornar quantos????
explique o q vc pretende com o select acima ou o q está acontecendo, de outra forma fica difícil tentar ajudar
T+
? é ? 1ª vez q vejo esta questão
|Se não tiver na tabela pai 1 MDME então verificar se tem na 2 MDME e
|mostrar se for o caso, eu tentei diversas maneiras
vc tem q explicar melhor... não entendi nada!!!
|select CODMED, PDDS from PROCEDMATMAD (0,2)
|INNER JOIN PRODUTO PDT ON (PDT.PDCD=CODMED)
|INNER JOIN especifica_med_detalhe EMD ON (EMD.MDPD=PDT.PDCD)
|ele volta a me retornar dois produtos novamente
hummm... o problema está aqui!! Certo, ele retorna 2 produtos novamente... e deveria retornar quantos????
explique o q vc pretende com o select acima ou o q está acontecendo, de outra forma fica difícil tentar ajudar
T+
GOSTEI 0
Sremulador
12/03/2004
? é ? 1ª vez q vejo esta questão
Eu já postei com outras descrição
|Se não tiver na tabela pai 1 MDME então verificar se tem na 2 MDPC e
|mostrar se for o caso, eu tentei diversas maneiras
Acontece que a tabela pai MDME tem 4 cods chave mestre 1,2,3,4
na filha tem o campo MDPC que são os produtos
|select CODMED, PDDS from PROCEDMATMAD (0,2)
|INNER JOIN PRODUTO PDT ON (PDT.PDCD=CODMED)
|INNER JOIN especifica_med_detalhe EMD ON (EMD.MDPD=PDT.PDCD)
|ele volta a me retornar dois produtos novamente
hummm... o problema está aqui!! Certo, ele retorna 2 produtos novamente... e deveria retornar quantos????
Apenas um de cada
1
2
3
4
5
6
e esta retornando
1
2
2
3
3
4
4
5
6
7
Contece que alguns tem na segunda tabela pesquisada
explique o q vc pretende com o select acima ou o q está acontecendo, de outra forma fica difícil tentar ajudar
Acontece que eu quero que ele me retorne epenas um cod de um produto pois o produtos esta cadastrado com o mesmo cod diversas vezes apenas diferenciado pelo mestre que e o MDME. :roll:
GOSTEI 0
Afarias
12/03/2004
Ainda não está claro para mim... pq vc não coloca a estrutura das tabelas envolvidas (apenas os campos importantes) e diz o resultado/campos q vc deseja?? -- ai dá pra tentar montar o SQL...
T+
T+
GOSTEI 0
Sremulador
12/03/2004
A estrutura e esta
´EPPV´INTEGER NOT NULL,
´EPPC´INTEGER NOT NULL,
´EPDS´´DESCRICAO´,
´EPVL´´VALOR´,
´EPCX´VARCHAR(15),
´EPCH´´NUMEROS´,
eu preciso retornar somente os campo EPPV E EPPC
Sendo que não pode haver nenhuma repetição para o campo EPPC, para o campo EPPV eu passo dois parametros para que ele me retorne epenas as colunas EPPV.
´EPPV´INTEGER NOT NULL,
´EPPC´INTEGER NOT NULL,
´EPDS´´DESCRICAO´,
´EPVL´´VALOR´,
´EPCX´VARCHAR(15),
´EPCH´´NUMEROS´,
eu preciso retornar somente os campo EPPV E EPPC
Sendo que não pode haver nenhuma repetição para o campo EPPC, para o campo EPPV eu passo dois parametros para que ele me retorne epenas as colunas EPPV.
GOSTEI 0
Afarias
12/03/2004
que sopa de letrinhas... :roll: não sei como vc consegue!!!
mas olha, só pra completar, achei q a consulta envolvia + que 1 tabela!!! pq vc só postou 1??
T+
mas olha, só pra completar, achei q a consulta envolvia + que 1 tabela!!! pq vc só postou 1??
T+
GOSTEI 0
Vagner Wolf
12/03/2004
8) nào sei se entendi tambem mas me parece que vc tem valores duplicados por causa da data, geralmente vc pode resolver isso com uma tabela adicional que nao utilize valores que nao podem ser agrupados, por exemplo, digamos que ao inves de vc ter definido o seu campo data para registrar um DEFAULT = DataDoDia, vc possa por engano ter Registrado um DEFALT = NOW, assim se for um TIMESTAMP, ele vai guardar tando a Data quanto a Hora, ai vc nao vai poder agrupar nunca
Se o que eu disse não tem nada a ver com o que vc quer, tenta refazer o seu exemplo com um formato tipo TABELA1.Nome, TABELA1.Data, etc..., fica mais facil pra te ajudar, ja que nao conheço a sua nomeclatura.
:wink: espero ter ajudado,
t+
Vagner
Se o que eu disse não tem nada a ver com o que vc quer, tenta refazer o seu exemplo com um formato tipo TABELA1.Nome, TABELA1.Data, etc..., fica mais facil pra te ajudar, ja que nao conheço a sua nomeclatura.
:wink: espero ter ajudado,
t+
Vagner
GOSTEI 0
Sremulador
12/03/2004
Na consulta envolve várias tabelas porem eu quero filtrar somente de uma, pois eu conseguindo distinguir o resto e sopa na verdade eu tenho de distinguir o MDPD, porem tenho que mostrar de que tabela pai o MDME esta relacionado
Tabela pai
´MECD´INTEGER NOT NULL,
´MEDS´´DESCRICAO´,
Filha
´MDME´INTEGER NOT NULL,
´MDPD´INTEGER NOT NULL,
´MDDS´´DESCRICAO´,
´MDVV´´VALOR´,
´MDVE´´VALOR´,
´MDBI´VARCHAR(10),
´MDDA´DATE,
´MDCX´VARCHAR(15),
Na tabela pai Tenho as descrições
´MECD´ 1
´MEDS´ FORNECEDOR 1
´MECD´ 2
´MEDS´ FORNECEDOR 2
´MECD´ 3
´MEDS´ FORNECEDOR 3...
Na tabela Filha Tenho as descrições
´MDME´1
´MDPD´1
´MDME´1
´MDPD´2
´MDME´1
´MDPD´3
´MDME´1
´MDPD´4
´MDME´2
´MDPD´1
´MDME´2
´MDPD´2
´MDME´2
´MDPD´3...
Mas eu tenho que mostrar em um grid seleção os produtos distinguidos pelo MDPD mas quero que apareça também o MDME
Se eu aplicar o distinc assim Select MDME, MDPD from tabela ele vai repetir o MDPC e vai distinguilos pelo MDME, a questão e essa :cry:
Tabela pai
´MECD´INTEGER NOT NULL,
´MEDS´´DESCRICAO´,
Filha
´MDME´INTEGER NOT NULL,
´MDPD´INTEGER NOT NULL,
´MDDS´´DESCRICAO´,
´MDVV´´VALOR´,
´MDVE´´VALOR´,
´MDBI´VARCHAR(10),
´MDDA´DATE,
´MDCX´VARCHAR(15),
Na tabela pai Tenho as descrições
´MECD´ 1
´MEDS´ FORNECEDOR 1
´MECD´ 2
´MEDS´ FORNECEDOR 2
´MECD´ 3
´MEDS´ FORNECEDOR 3...
Na tabela Filha Tenho as descrições
´MDME´1
´MDPD´1
´MDME´1
´MDPD´2
´MDME´1
´MDPD´3
´MDME´1
´MDPD´4
´MDME´2
´MDPD´1
´MDME´2
´MDPD´2
´MDME´2
´MDPD´3...
Mas eu tenho que mostrar em um grid seleção os produtos distinguidos pelo MDPD mas quero que apareça também o MDME
Se eu aplicar o distinc assim Select MDME, MDPD from tabela ele vai repetir o MDPC e vai distinguilos pelo MDME, a questão e essa :cry:
GOSTEI 0
Afarias
12/03/2004
|Mas eu tenho que mostrar em um grid seleção os produtos distinguidos
|pelo MDPD mas quero que apareça também o MDME
vc quer q cada MDPD apareça apenas 1 vez na listagem -- e, vc quer tb q apareça o MDME correspondente...
...entretanto, cada MDPD pode estar relacionado a vários MDME... então? como isso é possível?? qual o critério para saber qual dos MDME relacionados a um MDPD deve aparecer???
T+
|pelo MDPD mas quero que apareça também o MDME
vc quer q cada MDPD apareça apenas 1 vez na listagem -- e, vc quer tb q apareça o MDME correspondente...
...entretanto, cada MDPD pode estar relacionado a vários MDME... então? como isso é possível?? qual o critério para saber qual dos MDME relacionados a um MDPD deve aparecer???
T+
GOSTEI 0
Sremulador
12/03/2004
bem segue assim: quando eu passar o parametro por exemplo
1ª MDME
PAR 1
2ª MDME
PAR 2
O primeiro que ele achar caso ele ache o MDPD na 1ª então e esse o que vai pra lista caso contrario ele vai buscar na 2ª se tiver ele incluir na lista da pesquisa.
Sabemos que o MDPD se repete diversas vezes mas eu quero que o primeiro que ele achar ele inclua e ignore o outro :cry:
1ª MDME
PAR 1
2ª MDME
PAR 2
O primeiro que ele achar caso ele ache o MDPD na 1ª então e esse o que vai pra lista caso contrario ele vai buscar na 2ª se tiver ele incluir na lista da pesquisa.
Sabemos que o MDPD se repete diversas vezes mas eu quero que o primeiro que ele achar ele inclua e ignore o outro :cry:
GOSTEI 0
Afarias
12/03/2004
Sabemos que o MDPD se repete diversas vezes mas eu quero que o primeiro que ele achar ele inclua e ignore o outro :cry:
O primeiro MDME entre qualquer um existente para o MDPD ou só os MDME entre aqueles ditados pelos parâmetros passados??
T+
GOSTEI 0
Sremulador
12/03/2004
os parametros são pasado para o MDME que e relacionado com a tabela mestre os detalhes tem que ser diferentes
GOSTEI 0
Sremulador
12/03/2004
Buaaaaaaa...... :cry: :cry: :cry: :cry:
GOSTEI 0
Afarias
12/03/2004
Buaaaaaaa...... :cry: :cry: :cry: :cry:
Eita! hahahahaha... calma! não priemos cânico! ;)
O problema (para mim) é q vc realmente não está conseguindo ser claro no que vc deseja ... eu realmente ainda não entendi... mas vou dar um chute::
create procedure sopa_de_letrinhas (mdme1 integer, mdme2 integer) returns (r_mdpd integer, r_mdme integer, r_meds varchar(30)) as declare variable flag integer; begin if (mdme2 < mdme1) then begin flag = mdme1; mdme1 = mdme2; mdme2 = flag; end flag = 0; for select md.mdpd, md.mdme, me.meds from tabela_filho md inner join tabela_pai me on (me.mecd=md.mdme) where me.mdme = :mdme1 or me.mdme = :mdme2 order by me.mdme into :r_mdpd, :r_mdme, :r_meds do begin if (flag <> r_mdpd) then begin flag = r_mdpd; suspend; end end end^
sei lá... é uma forma de fazer (o q não sei!! ;))... no mais, acho q só vc explicando melhor... :(
T+
GOSTEI 0
Sremulador
12/03/2004
Na minha tabela está assim
MDME MDPD
1 1
1 2
1 3
1 4
2 1
2 2
2 3
.....
então eu tenho que exibir somente um MDPD sendo que a pesquisa eu posso fazer em até duas MDME
where MDME=1 AND MAME=2
se eu fizer como acima
ele vai me retornar repetido o MDPD mas na verdade o que eu quero sim e que ele me retorne com valores distintos para o MDPD quando o MDME ele pode me retornar o primeiro que ahar tipo
se MDME 1 tiver o MDPD 56 e no MEME 2 também tiver o 56 ele só vai me mostrar o 56 do MDME 1
entendeu ?
MDME MDPD
1 1
1 2
1 3
1 4
2 1
2 2
2 3
.....
então eu tenho que exibir somente um MDPD sendo que a pesquisa eu posso fazer em até duas MDME
where MDME=1 AND MAME=2
se eu fizer como acima
ele vai me retornar repetido o MDPD mas na verdade o que eu quero sim e que ele me retorne com valores distintos para o MDPD quando o MDME ele pode me retornar o primeiro que ahar tipo
se MDME 1 tiver o MDPD 56 e no MEME 2 também tiver o 56 ele só vai me mostrar o 56 do MDME 1
entendeu ?
GOSTEI 0
Afarias
12/03/2004
|se MDME 1 tiver o MDPD 56 e no MEME 2 também tiver o 56 ele só vai
|me mostrar o 56 do MDME 1 entendeu ?
Não é o q o procedimento que escrevi está fazendo???
T+
|me mostrar o 56 do MDME 1 entendeu ?
Não é o q o procedimento que escrevi está fazendo???
T+
GOSTEI 0
Sremulador
12/03/2004
Este forum esta com bug.
GOSTEI 0
Afarias
12/03/2004
Este forum esta com bug.
Como assim??
T+
GOSTEI 0
Sremulador
12/03/2004
Pra mim ver a resposta tenho que colocar outro reply :(
GOSTEI 0
Sremulador
12/03/2004
Para que eu possa ve a pagina dois tenho que dar uma resposta, quando eu entro de primeira ele diz que não tem nehuma menssagem para este topico :(
GOSTEI 0
Sremulador
12/03/2004
A proposito não entendi como isso vai aparecer somente um registro
begin
if (TAB2 < TAB1) then
begin
FLAG = TAB1;
TAB1 = TAB2;
TAB2 = FLAG;
end
FLAG = 0;
for select MDME, MDPD, MDDS from ESPECIFICA_MED_DETALHE
where MDME =:TAB1 or MDME =:TAB2
order by MDME
into :SMDME, :SMDDS, :SMDPS
do begin
if (FLAG <> MDPD) then
begin
FLAG = MDPD;
suspend;
end
end
end^
begin
if (TAB2 < TAB1) then
begin
FLAG = TAB1;
TAB1 = TAB2;
TAB2 = FLAG;
end
FLAG = 0;
for select MDME, MDPD, MDDS from ESPECIFICA_MED_DETALHE
where MDME =:TAB1 or MDME =:TAB2
order by MDME
into :SMDME, :SMDDS, :SMDPS
do begin
if (FLAG <> MDPD) then
begin
FLAG = MDPD;
suspend;
end
end
end^
GOSTEI 0
Afarias
12/03/2004
eu acho q já tinha respondido aqui... mas la vai :)
|A proposito não entendi como isso vai aparecer somente um registro
realmente, pq errei no código do procedimento, onde tem
order by MDME
coloque
order by MDPD, MDME
T+
|A proposito não entendi como isso vai aparecer somente um registro
realmente, pq errei no código do procedimento, onde tem
order by MDME
coloque
order by MDPD, MDME
T+
GOSTEI 0