Uma consulta SQL em cima de outra SQL?
Como faço para fazer uma consulta SQL em cima de outra consulta SQL?
Phfdelphi
Curtidas 0
Respostas
Yankleber
31/08/2003
Olá,
Acredito que você esteja querendo fazer pesquisas aninhadas, e isso é perfeitamente possível em SQL.
Por, exemplo, para pesquisar em uma tabela ´clientes´, todos os nomes que começam com a letra A, você faria:
Suponha que você queira pesquisar dentro do resultado (todos os clientes cujo nome comecem com a letra A), aqueles cujo sobrenome comecem com a letra B). Você poderia fazer:
Ou seja, para aninhar pesquisas, depois do SELECT * FROM, ao invés de colocar o nome da tabela a ser pesquisada, basta colocar a outra pesquisa entre parênteses.
Obs.: Antes que alguém por aí possa cair da cadeira, eu explico: é claro que poderíamos ter feito as duas comparações (nome e sonbrenome) ao mesmo tempo em uma só pesquisa usando AND, contudo usei o exemplo acima apenas para explicar de maneira fácil ao nosso colega como aninhar pesquisas.
Espero ter ajudado...
Acredito que você esteja querendo fazer pesquisas aninhadas, e isso é perfeitamente possível em SQL.
Por, exemplo, para pesquisar em uma tabela ´clientes´, todos os nomes que começam com a letra A, você faria:
SELECT * FROM clientes WHERE nome LIKE ´A¬´
Suponha que você queira pesquisar dentro do resultado (todos os clientes cujo nome comecem com a letra A), aqueles cujo sobrenome comecem com a letra B). Você poderia fazer:
SELECT * FROM (SELECT * FROM clientes WHERE nome LIKE ´A¬´) WHERE sobrenome LIKE ´B¬´
Ou seja, para aninhar pesquisas, depois do SELECT * FROM, ao invés de colocar o nome da tabela a ser pesquisada, basta colocar a outra pesquisa entre parênteses.
Obs.: Antes que alguém por aí possa cair da cadeira, eu explico: é claro que poderíamos ter feito as duas comparações (nome e sonbrenome) ao mesmo tempo em uma só pesquisa usando AND, contudo usei o exemplo acima apenas para explicar de maneira fácil ao nosso colega como aninhar pesquisas.
Espero ter ajudado...
GOSTEI 0
Japa
31/08/2003
So uma perguntinha, fazer uma pequisa assim deixa mais rapida a consulta??? :?:
GOSTEI 0
By Alemão
31/08/2003
Ola,
Desse jeito a pesquisa fica mais rapida por ela é feita num SELECT só...
senão vc teria que executar o Primeiro SELECT e em cima desse resultado fazer um SELECT pra cada um dos registro encontrados no SELECT anterior....
teu banco pesaria muito...
Alemão
Desse jeito a pesquisa fica mais rapida por ela é feita num SELECT só...
senão vc teria que executar o Primeiro SELECT e em cima desse resultado fazer um SELECT pra cada um dos registro encontrados no SELECT anterior....
teu banco pesaria muito...
Alemão
GOSTEI 0
Henry Schutz
31/08/2003
Alemão,
Essas subqueries funcionam no BDE?
tenho tentado utiliza-las, e sempre me dá erro informando o uso incorreto do ´select´, no caso o segundo select
estou começando a achar q há alguma limitação do BDE quanto a isso
agradeço qq ajuda !
abraço !
Essas subqueries funcionam no BDE?
tenho tentado utiliza-las, e sempre me dá erro informando o uso incorreto do ´select´, no caso o segundo select
estou começando a achar q há alguma limitação do BDE quanto a isso
agradeço qq ajuda !
abraço !
GOSTEI 0
Jeancamila
31/08/2003
Normalmente uso assim:
select c.codcli from cliente c where c.codcli in (select a.codcli from vendas a)
select c.codcli from cliente c where c.codcli in (select a.codcli from vendas a)
GOSTEI 0
By Alemão
31/08/2003
olha cara,
não conheco as limitações do BDE. Eu trabalho com SQL Server e MySQL com mais de 3 milhões de registros por tabela e dessa maneira funciona perfeitamente e rápido.....
não sei te dizer o q acontece no BDE......
tente migrar suas aplicações para MySQL que é free...... e é muito bom....
dúvidas pode me contatar....
Alemão
não conheco as limitações do BDE. Eu trabalho com SQL Server e MySQL com mais de 3 milhões de registros por tabela e dessa maneira funciona perfeitamente e rápido.....
não sei te dizer o q acontece no BDE......
tente migrar suas aplicações para MySQL que é free...... e é muito bom....
dúvidas pode me contatar....
Alemão
GOSTEI 0