Dunque...
Ho una tabella PIPPO composta da:
id - tipo contatore, autoincrementante, chiave
campo_1 - qualcosa
campo_2 - qualcosa
campo_3 - qualcosa
ho la necessità di fare una query su campo_1, campo_2, campo_3.
I risultati della query dovrebbero essere accompagnati da un "contatore".
In pratica i risultati della query dovrebbero presentarsi come segue:
1 || valore x campo 1 || valore x campo 2 || valore x campo 3 ||
2 || valore x campo 1 || valore x campo 2 || valore x campo 3 ||
3 || valore x campo 1 || valore x campo 2 || valore x campo 3 ||
4 || valore x campo 1 || valore x campo 2 || valore x campo 3 ||
5 || valore x campo 1 || valore x campo 2 || valore x campo 3 ||
ecc.. ecc..
I valori restituiti dal contatore dovrebbero presentarsi in maniera omogenea, senza "buchi", per cui per il terzo record restituito dalla query il contatore deve valere esattamente 3, per il quinto deve valere esattamente 5 e così via.
Non posso, pertanto, usare il campo id come contatore perchè in questo caso si presentarebbero dei "buchi" ogni qualvolta si eliminasse un record dalla tabella.
Provvisoriamente ho risolto in questo modo:
########################################
select
p1.campo_1,
p1.campo_2,
p1.campo_3,
(select count(id) from PIPPO p2 where p2.id<p1.id) as contatore
from
PIPPO p1
order by p1.id
########################################
Questa soluzione funziona abbastanza bene se si mantiene l'ordinamento per id, ma, ovviamente, sballa completamente se si tenta un altro tipo di ordinamento, ad esempio per campo 1.
Qualcuno ha una soluzione da suggerirmi?
Grazie infinite,
Francesco.