Ciao raga,
come faccio in query creazione tabella a crearmi un id incrementale della tabella ?
10ks![]()
.
Ciao raga,
come faccio in query creazione tabella a crearmi un id incrementale della tabella ?
10ks![]()
.
In visualizzazione struttura definisci il campo di tipo contatore e gli assegni la chiave primaria facendo click col tasto destro in corrispondenza di quella riga.
Intendi dire impostare la tabella ?
cioè apro la tabella esistente in struttura e mi creo un campo contatore ?
se è quello che intendi non volevo questo,
vorrei creare tramite una query di creazione tabella un'altra tabella generando un contatore (ID Incrementale ) della tabella creata.
.
Una volta salvata la tabella se aggiungi il campo contatore non ottieni il risultato desiderato?
Si, però io non volevo modificarla manualemente una volta creata.
ho trovato questo codice in rete, in pratica è una subquery
con query di selezione funge, ma se imposto una query di creazione continua a macinare senza risultato ??codice:Count: (Select Count (*) FROM [tabella] as tb1 WHERE [tb1].[ID] < [tabella].[ID])+1![]()
.
Certo che è assurdo che non esista ad oggi una funzione di numerazione progressiva in tutto l'SQL di Access.
Così come molte altre faccende: non ci lavoravo in maniera intensiva dal lontano '98 (realizzai un sistema di archiviazione documenti e immagini per l'Archivio Storico Telecom Italia) e sono scandalizzato dalla permanenza di certe difficoltà.
Non toccare, non funzionerà più
niente.
Se ci dici nel dettaglio cosa non riesci a numerare magariOriginariamente inviato da loosigoosi
.....
e sono scandalizzato dalla permanenza di certe difficoltà.
possiamo spiegarti come si fà
Pero apri un'altra domanda,
Ti sei accodato a qualcosa dell' ottobre 2010 !!!!
.
Supponi di voler creare, in SQL puro, una query - una - che restituisca in una colonna un numero progressivo generato come espressione:
1 ... ...
2 ... ...
3 ... ...
4 ... ...
... ... ...
Se la tabella sottostante non contiene un campo contatore NON si riesce a fare nulla.
Certo, se lo contiene è abbastanza facile, le soluzioni si trovano su diversi siti di FAQ, e in sostanza si calcola il numero da una sottoquery che seleziona tutti i record con ID contatore inferiore a quello di riga corrente, li conta e sommando uno attribuisce il progressivo.
Questo metodo ha comunque un sacco di limiti, occorre che non ci siano ordinamenti particolari altrimenti la faccenda si complica.
Ho fatto diverse ricerche, non ci sono soluzioni migliori di questa, che è anche riportata in questo thread.
Se invece non lo contiene (o non si può modificare in tal senso per ragioni contingenti) non c'è nulla da fare, se non creare una tabella con contatore, per uso temporaneo, in cui inserire i dati con una query di accodamento e poi eseguirne un'altra che abbia come tabella sottostante la tabella temporanea e ne derivi il progressivo. Il calcolo si rende comunque necessario anche avendo il contatore, poiché parte da 1 solo la prima volta che aggiungiamo record, dopodiché continua per la sua strada, ma queste sono Le Basi.
Tutto ciò implica che non è possibile fare in un sol colpo una query di un'altra query numerando i record in una colonna.
Non toccare, non funzionerà più
niente.
Quando, circa 25 anni fa, feci un corso di DB2, un database relazionale come Access, una delle prime cose che mi fu spiegata è che non si può applicare il concetto di "numerazione" alle righe estratte da una select.
Il motivo, se ricordo bene, è che la select non garantisce l'ordinamento dei dati estratti (a meno di non utilizzare una order by) e, se fosse possibile numerare le righe si potrebbero ottenere incongruenze fra estrazioni successive sugli stessi dati.
In altre parole, non c'è niente di strano, almeno in linea di principio, che una select estragga
riga 1
riga 2
riga 3
e, un attimo dopo, a parità di base dati,
riga 3
riga 1
riga 2
Queste due tabelle risultato, pur se diverse all'apparenza, sono coerenti fra loro mentre non lo sarebbero più se le righe fossero numerate progressivamente.
Bisogna entrare nell'ordine di idee di separare l'estrazione dei dati grezzi effettuata dalla select dalla formattazione e presentazione dei dati effettuate con altri sistemi propri di ciascun ambiente (e che, relativamente ad access neanche conosco).
La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
www.beppegrillo.it