Erro no select com FB que não acontecia no IB
Olá pessoal,
estou com um probleminha aqui, tenho um select com a cláusula UNION que funciona perfeitamente com o IB6, porém ao instalar o FB 1.5.2 parou de funcionar e apresenta a msg de erro de ´coluna desconhecida´.
a questão é que o WHERE do segundo SELECT (após a cláusula UNION) faz referência a uma coluna do primeiro SELECT, é aí que aparece o erro.
e isso não acontecia com o IB6, alguém imagina o que está acontecendo ?
[]´s
AASN
estou com um probleminha aqui, tenho um select com a cláusula UNION que funciona perfeitamente com o IB6, porém ao instalar o FB 1.5.2 parou de funcionar e apresenta a msg de erro de ´coluna desconhecida´.
a questão é que o WHERE do segundo SELECT (após a cláusula UNION) faz referência a uma coluna do primeiro SELECT, é aí que aparece o erro.
e isso não acontecia com o IB6, alguém imagina o que está acontecendo ?
[]´s
AASN
Aasn
Curtidas 0
Respostas
Joaoshi
29/06/2006
Quando mudei para FB tive este problema em alguns selects que utilizavam mais de uma tabela. Passei a utilizar sempre o nome da tabela antes dos campos.
Ex.: SELECT CLIENTE.CODIGO,CLIENTE.ENDERECO FROM CLIENTE
E se não for nada disto me desculpe.
Ex.: SELECT CLIENTE.CODIGO,CLIENTE.ENDERECO FROM CLIENTE
E se não for nada disto me desculpe.
GOSTEI 0
Sremulador
29/06/2006
estou com o mesmo problema porem e com um sub-select
GOSTEI 0
Weber
29/06/2006
Não pode se dizer que é um problema e sim que é uma correção de bug.
No IB6 é possivel usar uma clausula Where sem identificar de qualquer tabela se refere o campo, isto pode ocasionar erros.
No FB você é obrigado a informar qual tabela se refere o campo isto faz com que seu select seja muito mais confiável.
No IB6 é possivel usar uma clausula Where sem identificar de qualquer tabela se refere o campo, isto pode ocasionar erros.
No FB você é obrigado a informar qual tabela se refere o campo isto faz com que seu select seja muito mais confiável.
GOSTEI 0
Aasn
29/06/2006
Caro weber,
O campo referenciado no WHERE está identificado não com o nome da tabela mas com o alias correspondente!
[]´s
AASN
O campo referenciado no WHERE está identificado não com o nome da tabela mas com o alias correspondente!
select a.*, b.operacao, b.chegada, b.atendimento, b.ok, b.categoria, b.servico, b.obs, b.encaixe, b.flag, c.nome, c.codigo, c.nascimento, c.ultima_consulta, d.nome as nome_convenio from agenda_dia(:medico,:data,:dia) a left join agendas b on (b.medico = :medico) and (b.data = :data) and (b.hora = a.hora) left join pacientes c on (c.codigo=b.paciente) left join convenios d on (d.codigo=b.categoria) union select e.data, e.hora, e.operacao, e.chegada, e.atendimento, e.ok, e.categoria, e.servico, e.obs, e.encaixe, e.flag, c.nome, c.codigo, c.nascimento, c.ultima_consulta, d.nome as nome_convenio from agendas e left join pacientes c on (c.codigo=e.paciente) left join convenios d on (d.codigo=e.categoria) where (e.medico = :medico) and (e.data = :data) and (e.hora <> a.hora) order by 2
[]´s
AASN
GOSTEI 0
Weber
29/06/2006
Evite utilizar Select * e Union, isto pode ser a causa do seu problema.
GOSTEI 0
Aasn
29/06/2006
Caros colegas,
O erro não está no ´select a.* ...´ até pq são só dois campos... é uma falha nno FB mesmo, até pq na cláusula where faço referência ao campo através do alias ´where e.hora <> a.hora´.
[]´s
AASN
O erro não está no ´select a.* ...´ até pq são só dois campos... é uma falha nno FB mesmo, até pq na cláusula where faço referência ao campo através do alias ´where e.hora <> a.hora´.
[]´s
AASN
GOSTEI 0