Buonasera,
mi date qualche idea per ridurre ai minimi termini il processo per trovare in un database dei numeri mancanti?
Tipo una riga viene eliminata e voglio trovare gli id mancanti di quella sequenza
Buonasera,
mi date qualche idea per ridurre ai minimi termini il processo per trovare in un database dei numeri mancanti?
Tipo una riga viene eliminata e voglio trovare gli id mancanti di quella sequenza
C'è poco da ridurre ai minimi termini, ..... è come arrampicarsi sui vetri
Tradizionalmente in SQL si fanno i filtri,
ma in questo caso non si puo perche quello che vorresti filtrare è proprio quello che manca
Poi con la tua richiesta sembra che vuoi trovare TUTTI i numeri da MenoInfinito a PiuInfinito ad esclusione di quanto gia presente in tabella
Immaginiamo invece che ti bastano i numeri mancanti dal MinimoDiTabella al MassimoDiTabella
Le varie possibilita sono:
1°)
- Un ciclo che scorre i numeri naturali da MinimoDiTabella a MassimoDiTabella e verifica se il NumeroDelCiclo è presente in tabella
2°)
- con delle viste che fanno queste cose
--- prendi la tabella e ci costruisci un Numeratore continuo da 1 a n (Chiamiamola V1)
--- prendi ancora la tabella e costruisci un altro Numeratore continuo da 2 a n+1 (Chiamiamola V2)
--- metti in Join V1 e V2 sui 2 Numeratore costruiti (Chiamiamola V3)
- se la tua sequinza di numeri è continua in V3 avrai sempre differenza di una unita fra i tuoi 2 ID
- se discontinua avrai una differenza maggiore
- quindi hai trovato il 1° numero mancante
- Ma se mancano più numeri consecutivi allora si complica parecchio
- Qui mi fermo perche è complesso e devo andare a lavorare
Ma magari non ti servono TUTTI gli ID mancanti ma solamente il primo
allora sarebbe moltissimo piu facile
Ma non è che per caso vuoi rimpiazzare gli ID eliminati ??????
sappi che è una idea malsana
Facci sapere
.
Ultima modifica di nman; 01-07-2017 a 07:06
In più dell'intervento di nman.
Se vuoi sapere quante righe mancano puoi :
- Usare una tabella che riempi quando cancelli nell'altra.
- Usare un flag attivato/disattivato che fa una cancellazione logica e non più fisica.
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Per il fisco non penso si possa cancellare una fattura.
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Beh. Non sono Italiano ma sappia che in Francia quando un documento viene emesso non lo si puo' cancellare. Se devi fare un reso parziale o totale o qualunque modifica (tipo tariffa sbagliata, sconti mancanti) bisogna creare un nuovo documento con un legame al documento di origine.
Infatti devi essere in grado di tracciare ogni documento.
Come si dice da me. Dico questo dico nulla.![]()
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Se non la hai consegnata al commercialista non è ancora andata nel "registro Iva" pertanto è talvolta usuale correggere, eliminare e sostituire delle fatture
Si tratta di operazioni che si fanno senza frodare il fisco ......
Dopo avere registrato la fattura allora è diverso, bisogna fare la "nota di accredito"
Data una tabella di nome "TB"
con dentro un unico campo numerico di nome "Nume"
con questa vista:
Trovi il primo numero mancante nella sequenza che parte da 1 fino al MaxDiTabellacodice:SELECT Min(U.MPx) AS MPy FROM ( SELECT Min(IIf(X.Nume>1.5,1,0)) AS MPx FROM TB AS X HAVING ((Min(IIf(X.Nume>1.5,1,0)))>0.5) UNION ALL SELECT (K.Nume + 1) AS MPx FROM TB AS K LEFT JOIN TB AS H ON (K.Nume + 1) = (H.Nume + 0) WHERE ((H.Nume) Is Null) ) AS U ;
e se non manca nulla trovi comunque il numero successivo al MaxDiTabella
Facci sapere
.