Duvida com SQL[resolvido]

11 respostas
denisspitfire

Tem como criar uma sql que retorne o numero de resultados de um where sem imprimi-los?
pois quando eu dou um select where é para imprimir. e para mostrar quantos sao ao inves de quais sao?

11 Respostas

Rodrigo_Sasaki

Ja pesquisou sobre o COUNT?

denisspitfire

rownum?

Jhonny_Oliveira

Tente

select count(*) from tabela where condição
denisspitfire

achei esse código, oque é customer?? é a tabela? ou é Orders que é a tabela?

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders WHERE Customer='Nilsen'

denisspitfire

tentei com rownum e foi desastroso kkkkk fiquei meio perdido em como usar where. acho que o count é melhor

Rodrigo_Sasaki

o Customer é o campo…

tente a query que foi passada ali em cima… com

SELECT COUNT(*)...
E

denisspitfire:
Tem como criar uma sql que retorne o numero de resultados de um where sem imprimi-los?
pois quando eu dou um select where é para imprimir. e para mostrar quantos sao ao inves de quais sao?

Que tal ler um tutorial de SQL antes?

Acho que você vai achar mais produtivo.

Não deve lhe tomar nem dois dias para você aprender um monte de SQL (e não ir atrás das roubadas, que é o caso de “rownum”), só de ler o tutorial.

O Google me retornou para “SQL Tutorial” este link:

http://www.criarweb.com/sql/

Não sei se é bom, mas como é em português já deve ser um bom começo.

denisspitfire

estou com o use a cabeça sql, mas nao tinha algo a respeito até onde eu li. Como nao queria atropelar resolvi pesquisar mesmo usando oque eu sabia “rownum”.

Porém o resultado eu ja consegui

select count(*) from contatos where nome='Teste';

VLW!!

E

Só uma coisinha (que talvez possa lhe aborrecer mais tarde, mas já vou adiantando)

Normalmente o pessoal costuma fazer algo como:

pegar o resultado de select count (*) e jogar em uma variável
dimensionar um array com o valor dessa variável
ir lendo os registros retornados por um select normal (com o mesmo where) dentro desse array

Uma falha dessa lógica é a seguinte: suponha que o banco de dados seja compartilhado por várias aplicações e/ou vários usuários.
Digamos que, entre o tempo de você achar o valor do select count() e você efetivamente chamar o select normal para carregar os registros, alguém insira ou remova registros, de modo que a quantidade real de registros retornados pelo select normal fique um pouco diferente do select count().
O que ocorreria no seu programa?

  • Se for mais - provavelmente vai estourar o array
  • Se for menos - o array vai ficar com posições vazias.

Portanto, você não deve confiar “muito” no valor retornado por select count(*), a menos que você use transações (mas nesse caso você poderia estar travando as outras aplicaçoes, que ficariam impedidas temporariamente de inserir ou remover outros registros). Veja o que você pode fazer.

denisspitfire

vish… entao quer dizer que, estou usando o comando, porém outros podem estar adicionando coisas lá que podem passar nos parametros que eu dei no select porém, o cadastro nao seria o ultimo registro? ele nao será o ultimo analisado?

E

Como eu disse, é algo bastante difícil de ocorrer, mas quando ocorre, normalmente é quando você está em casa, dormindo, de madrugada, e alguém (normalmente o chefe do chefe do chefe) lhe telefona dizendo que achou um problema - que, como de costume, é difícil de reproduzir.

De qualquer maneira, provavelmente nesse livro (que não tenho e portanto não sei se ele fala disso) você vai ver os níveis de isolação de transações, que podem servir para diminuir esse problema.

Criado 2 de abril de 2012
Ultima resposta 2 de abr. de 2012
Respostas 11
Participantes 4