• 0
Sign in to follow this  
marcosgugs

Select Com Contador

Question

Olá, estou com um problema que não sei se pode ser resolvido da forma que eu quero...

bom...

eu preciso criar um select, e no meu resultado é necessário vir um contador de linhas...

por exemplo:

select CONTADOR, codigo, nome from clientes;
então o resultado seria:
1      184621    Marcos Junior
2      556423    Nelson Alvez
3      225462    Rodrigo Pereira
4      312121    Ricardo Fagundes

esse CONTADOR eu não sei como fazer no sql... alguém poderia me ajudar

URGENTE !!!

desde já agradeço a atenção de todos...

um enorme abraço e uma ótima semana

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Olá!

Comecei agora com MySQL e estou penando muito... (quero passar do SQL da BDE para o MySQL)...

Mas vi sua mensagem e me lembrei dessa rotina... não sei se resolve seu problema, pois não sei se ela se aplica ao MySQL... mas o código é esse:

E' preciso criar uma tabela temporaria em SQL
com uma coluna que contenha um valor inteiro para incrementar,
sem dar a essa coluna uma identidade.

Por exemplo, supondo que você queira selecionar um registro de uma tabela de usuários,
mas adicionado uma coluna que contenha um contador incremental... os dados
dessa tabela poderiam ser assim:

contador UsuarioID nome            celular ...

0        93988     Zezinho         9102-2002
1        78829     Ana             8877-9292
2        65432     SandroPlankton  9582-9399
... 


Para iniciar, é preciso que você execute a query a seguir,
para criar a tabela temporária:

select contador = 0, * from usuarios into #us_temp

Isto criara uma tabela com o nome de #us_temp
onde a coluna "contador" é definida com zero em cada linha ou registro.

Para pedir para atualizar a coluna contador
para que cada linha (registro) tenha um valor maior do que a linha anterior,
execute o seguinte:

DECLARE @contador int
SET @contador = 0
UPDATE #us_temp
SET @contador = contador = @contador + 1

Ok?

Bom... tenho certeza de que o código acima não funciona nas queries no DBExplorer... mas quem sabe funciona no MySQL...

Abraços!

Share this post


Link to post
Share on other sites
  • 0

Em tempo...

Se fosse no DB2 (IBM) para Linux, Unix ou Windows:

"An example of such a function or method is a simple counter function that returns a '1' the first time it is called, and increments the result by one each successive call. Such a function could, in some circumstances, be used to number the rows of a SELECT result:

   SELECT counter(), a, b+c, ...
     FROM tablex
     WHERE ...

The function needs a place to store the current value for the counter between invocations, where the value will be guaranteed to be the same for the following invocation. On each invocation, the value can then be incremented and returned as the result of the function.

This type of routine is NOT DETERMINISTIC. Its output does not depend solely on the values of its SQL arguments.

"

Bom... daí para o MySQL... é com vocês!

Share this post


Link to post
Share on other sites
  • 0

primeiramente, obrigado Paulo pelas respostas... elas foram muito úteis...

o lance de criar a tabela temporária eu sei que funciona, já fiz o teste aqui

mas a minha dúvida é se tem como fazer esse contador, sem ter que criar tabela temporária...

fazendo o contador apenas em um select ...

entendeu?

um grande abraço

boa semana

_marcos

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this