Ir para conteúdo
Fórum Script Brasil
  • 0

Sql - Query Encima De Query


Corposemalma

Pergunta

Para inciar... biggrin.gif

Seguinte: Preciso fazer uma pesquisa encima de uma outra... Estou usando o Dbisam com duas query diferentes:

Da seguinte maneira:

with query1 do

bla bla bla

SQL.Add('SELECT * FROM tabelateste');

ExecSQL

with query2 do

bla bla bla

SQL.Add('SELECT * FROM ???? (tabela resultado do Query1)

O problema está em eu não poder enxergar a tabela no outro query, alguém sabe como posso fazer isso???

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

você tem que declarar a primeira query e depois fazer a segunda query com um parâmetro

Tipo 'select * from funcionario' retorna o funcionario com codigo 1

Daí você faz outra query:

'select * from vendas where cod_funcionario = :cod_funcionario' //:cod_funcionario é o parâmetro

antes de dar o Open na segunda query, você precisa setar o parâmetro 'cod_funcionario' assim:

query2.parameter.parambyname('cod_funcionario').asinteger := query1.fieldbyname('cod_funcionario').asinteger;

query2.Open;

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é que dessa maneira eu tenho que comparar o query1 com uma tabela já existente, quando na verdade eu quero carregar o query inteiro em outro usando alguns criterios de selecao, Por exemplo:

SELECT * FROM (query1) WHERE nome LIKE 'A%'

Mas acontece que o SQL pode acessar os banco, mas não os componentes, Então:

* Tem alguma maneira de acessar o banco inteiro que se encontra no Query1?

* Existe como eu re-filtrar o Query1 (ai não precisaria do query2)

Link para o comentário
Compartilhar em outros sites

  • 0

Pequeno banco só pra aprender um pouco...

Query1=dados.tabsql

Query2=dados.tabconsulta

Tabelas=tabcd, tabartista, tabgenero

Primeira QUERY

ON SHOW form de Consulta

Begin

    with dados.tabsql do

    begin

    sql.Clear;

    SQL.add('SELECT ' +

            'tabcd.título as Título, ' +

            'tabartista.nome ' + '+' + '''' + ' ' + '''' + '+' + ' tabartista.sobrenome AS Artista, ' +

            'tabcd.ano as Ano, ' +

            'tabgenero.genero AS Gênero, ' +

            'tabcd.comentário as Comentários ' +

            'FROM tabcd, tabartista, tabgenero ' +

            'WHERE tabcd.codartista = tabartista.codartista ' +

            'AND ' +

            'tabcd.codgenero = tabgenero.codgenero order by tabcd.título');

    ExecSQL;

    end;

Como se pode notar ele junta as duas colunas NOME e SOBRENOME em uma só Chamada ARTISTA

Então com a segunda QUERY:

Ele checa se o edit está vazio, caso não ele usa o texto do edit como um parametro LIKE que deveria filtrar a coluna ARTISTA(antiga NOME + SOBRENOME) do QUERY1 já existente para DENTRO da QUERY2

On button CONSULTA press

with dados.tabconsulta do

  begin

    SQL.Clear;

    SQL.Add(' SELECT * FROM ????tabsql???? WHERE');

      if edittitulo.text <> '' then

      begin

        dados.tabconsulta.SQL.Add(' tabsql.título LIKE ' + '''' + '%' +

                            edittitulo.text +

                            '%' + '''');

Assim eu não precisaria refazer todas as consultas...

Talvez esteja fazendo tudo errado e pela maneira mais dificil... Se alguém tiver uma ideia melhor! Fazer o que.. isso acontece quando se quer aprender sozinho as coisas.. Modo ninja... ph34r.gif 20 pirueta pra dar um soco

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Gimbals

SQL.add('SELECT ' +

'tabcd.título as Título, ' +

'tabartista.nome ' + '+' + '''' + ' ' + '''' + '+' + ' tabartista.sobrenome AS Artista, ' +

'tabcd.ano as Ano, ' +

'tabgenero.genero AS Gênero, ' +

'tabcd.comentário as Comentários ' +

'FROM tabcd, tabartista, tabgenero ' +

'WHERE tabcd.codartista = tabartista.codartista ' +

'AND ' +

'tabcd.codgenero = tabgenero.codgenero');

if edittitulo.text <> '' then

begin

SQL.add(' AND (tabartista.nome like ... OR tabartista.sobrenome like...);

end;

SQL.add(' order by tabcd.título');

execsql;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...