Fórum Sql de Comparacao Numa Mesma Tabela #49443
20/02/2005
0
é o seguinte:
tenho uma tabela, FB1.5
campos:
TPTABELA,
TPREF
TPPRECO
80.000 Registros
Registros:
TPTABELA TPREF TPPRECO
1)20050217 00001 10,00
2)20050217 00002 17,00
3)20050217 00003 6,00
etc...
100)20050117 00001 9,00
101)20050117 00002 17,00
102)20050117 00003 5,50
etc...
<é uma tabela só>
Observem.
o registro de numero (1) gostaria que fosse comparado com o registro (100) e assim por diante.
*detalhe, nao posso gerar 2 tabelas, estas informacoes sempre estarao na mesma tabela, porem, preciso analisar um registro com outro na mesma tabela.
ja montei uma rotina que eu analizo o primeiro registro e procuro pelo outro no restante da tabela, funcionou perfeitamente.
rotina que montei:
SQL1. select * from <tabela> where <tabela> = TPTABELAQUALQUER
SQL2. select * from <tabela2> where <tabela2> = TPTABELAQUALQUER AND
TPREF = :REFERENCIA
while not SQL1.eof do
begin
SQL2.parambyname(´REFERENCIA´).ASSTRING = SQL1.FieldByname(´TPREF´).ASSTRING;
SQL2.open;
pego as informacoes aqui e comparo com a SQL1.
SQL1.next;
end;
esta rotina ae funfou perfeitamente.
mas tem jeito de fazer num query so ? (motivo) para ser mais rapido.
Obrigado a todos.
Pedih
Curtir tópico
+ 0Posts
21/02/2005
Afarias
uma consulta na forma:
select * from tabela t1
inner join tabela t2 on (t2.TPREF = t1.TPREF
and t2.TPTABELA t1.TPTABELA)
where t1.TPTABELA = 20050217;
T+
Gostei + 0
22/02/2005
Pedih
Afarias, bom dia.
funcionou, entre aspas.
veja como montei a instrucao
SELECT * FROM FURTABELAPRECO T
INNER JOIN FURTABELAPRECO T2
ON(T.TPREF = T2.TPREF)
WHERE
T.TPTABELA = ´20050221´
AND
T2.TPTABELA = ´20050117´
AND
T.TPPRECO <> T2.TPPRECO
ORDER BY T.TPREF
porem.
veja: estou buscano as informacoes numa mesma tabela, e comparandoas.
mas, se um item tiver no primeiro select e no inner join ele nao aparecer, nao aparece no resultado, e vice-versa.
Preciso que: se algum item aparecer em qualquer uma, ele tem que mostrar.
Exemplo
Resultado do select principal tem um item que pertence TPTABELA = ´ 20050221´, este item nao encontra em TPTABELA = ´20050117´ , preciso que ele mostre este item que ficou aparecendo somente em um lado da sql, e vice-versa.
Importante, naoposso desmembrar a tabela, porque hoje, so existe ´ 20050221´ e ´ 20050117´, esta tabela ir´a crescer toda semana, e cada semana o campo TBTABELA receber´a este novo valor (data do dia) em forma de string. Entendeu ?
daqui 2 meses, por exemplo,
terei.
20050117
20050221
20050228
20050305
etc...
(sem limites)
e sempre terei a possibilidades de comparar um item de uma tabela com um outro na mesma tabela.Entendeu?
Obrigado.
Gostei + 0
22/02/2005
Afarias
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)