Problema com SQL

Firebird

23/03/2005

tenho a seguinte consulta:
Select  First 20 A.IdAluno, A.Nome, A.CPF,
(select r.nome from alunosresponsaveis r where r.idresponsavel=a.idmae) as nomemae,
(select r.nome from alunosresponsaveis r where r.idresponsavel=a.idpai) as nomepai,
(select r.nome from alunosresponsaveis r where r.idresponsavel=a.idresponsavel) as nomeresponsavel
from Alunos A where (A.SituacaoAtual = ´Matriculado´) and A.Nome like´Vic¬´
Group by A.IdAluno, A.Nome, A.CPF


que me retorna o seguinte erro [b:f502b1629a]´SQL error code = -104.
user name required.´[/b:f502b1629a] (Utilizando o IB Expert)

acredito que o erro está no Group By pq qdo retiro ele, a consulta me retorna o efeito desejado, tentei colocar os apelidos, ´nomemae, nomepai, nomeresponsavel´ mas não funciona me retorna [b:f502b1629a]´Column unknown.´[/b:f502b1629a]... o que pode ser, estou utilizando a verção 1.5 do Firebird conectado com dbExpress+SQLDataSet...


Bruno Belchior

Bruno Belchior

Curtidas 0

Respostas

Faelcavalcanti

Faelcavalcanti

23/03/2005

Cara eu acho que possa ser porcausa deste [b:3d91e852aa]First 20[/b:3d91e852aa]. Mas não vejo alguma outra forma de poder tentar modificá-lo. Acredito que o [b:3d91e852aa]Group By[/b:3d91e852aa], necessita de todas as referências dos campos declarados em um Select, exceto funções mais específicas como [b:3d91e852aa]SUM, MIN[/b:3d91e852aa], .... mas como não é o seu caso. Possa ser que ele esteja interpretando como um campo individualmente, ou sei lá, parece que está criando uma referência oculta em tempo de execução. Se você tentar especificar First 20 associado a um [b:3d91e852aa]As[/b:3d91e852aa], tipow dando um apelido e referenciando no Group By, resolve ???

:x
Essa tá difícil!!!


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

obrigado faelcavalcanti porém retirar o [b:6c2dc7c8b6]First 20[/b:6c2dc7c8b6] não resolveu o caso (o que eu tbm não acreditei qdo vi sua postagem)... mas descrevar melhor como assim criando um campo oculto?


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

23/03/2005

obrigado faelcavalcanti porém retirar o [b:da0f8af934]First 20[/b:da0f8af934] não resolveu o caso (o que eu tbm não acreditei qdo vi sua postagem)... mas descrevar melhor como assim criando um campo oculto?


Cara se tu, tentar assim sem a referência do First 20, funciona, pelo menos já é alguma coisa, tipow:

Select  A.IdAluno, A.Nome, A.CPF, R.Nome As NomeResponsavel

from Alunos A, alunosresponsaveis r
where r.idresponsavel=a.idresponsavel
or r.idresponsavel=a.idmae
or r.idresponsavel=a.idpai
and (A.SituacaoAtual = ´Matriculado´) 
and A.Nome like´Vic¬´ 
Group by A.IdAluno, A.Nome, A.CPF, R.Nome


Assim resolve cara, se não talvez agente tenha que utilizar alguns [b:da0f8af934]JOINS[/b:da0f8af934] e/ou coisa do tipow sei lá ???


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

não cara assim não resolve meu problema, não sei se reparou mas eu estou trazendo três [b:4278f02f12]r.nome[/b:4278f02f12] ou seja eles estão em posição diferentes no tabela alunosresponsáveis, (pq na alunos responsáveis estão tanto pai, mãe e um eventual responsável pelo aluno) da maneira que vc me apresentou, traria apenas um r.nome...


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

23/03/2005

não cara assim não resolve meu problema, não sei se reparou mas eu estou trazendo três [b:c525af455f]r.nome[/b:c525af455f] ou seja eles estão em posição diferentes no tabela alunosresponsáveis, (pq na alunos responsáveis estão tanto pai, mãe e um eventual responsável pelo aluno) da maneira que vc me apresentou, traria apenas um r.nome...


:x
Cara se não for assim, não sei não, expremo, expremo e não sai nada da cuca!

O problema é que você quer associar dentro de um [b:c525af455f]Select[/b:c525af455f], uma consulta com uma valor já retornado a partir de um filtro. Isso é um pouco complexo, me lembro de ter utilizado isto no Access uma função do tipo [b:c525af455f]iff[/b:c525af455f], quebrava até um galhinho mas quando fui passar pra Firebird me laskei.


Outra alternativa que eu poderia passar para você seria, de separar várias Queries e juntá-las associando os seus valores. Você está utilizando para que ?? Uma View, um relatório ????

:wink:
Dependerá do caso e do seu objetivo!


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

num saída de dados pro usuário (Grid)...


GOSTEI 0
Gandalf.nho

Gandalf.nho

23/03/2005

Talvez seja possível montar o que você precisa via SP


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/03/2005

Select First 20 A.IdAluno, A.Nome, A.CPF,
       Mae.Nome NomeMae,
       Pai.Nome NomePai,
       Resp.Nome NomeResponsavel,
from Alunos A
left join AlunosResponsaveis Mae on (Mae.idResponsavel=A.idMae)
left join AlunosResponsaveis Pai on (Pai.idResponsavel=A.idPai)
left join AlunosResponsaveis Resp on (Resp.idResponsavel=A.idResponsavel)
where (A.SituacaoAtual = ´Matriculado´) and A.Nome like ´Vic¬´



GOSTEI 0
Faelcavalcanti

Faelcavalcanti

23/03/2005

:P
Olha aí cara o que o [b:f1d1329536]emerson.en[/b:f1d1329536] fez, não é possível que não funcione. Perfect!!!!


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

Talvez seja possível montar o que você precisa via SP
estamos trabalhando de forma genérica em relação a banco de dados (até o auto incremento está sem usar generatos e triggers)...


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

resolvi meu problema, obrigado a todos...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/03/2005

resolveu? como?
se foi de uma forma diferente das dicas dadas, relate sua experiência aqui, para que sirva para outros usuários.


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

resolveu? como? se foi de uma forma diferente das dicas dadas, relate sua experiência aqui, para que sirva para outros usuários.
Me desculpe não me expressei corretamente, resolvi meu problema com a ajuda de todos neste tópico... desculpas e obriado a todos!


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

a propósito emerson.en não teria um link para uma apostila sobre uniões de tabelas colocando detalhadamente por exemplo a diferença entre os tipos de joins?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/03/2005

veja essa:
[url]http://www.clubedelphi.net/apostilas/ApostiladeFirebird.pdf[/url]


GOSTEI 0
POSTAR