Accodare record presi da un altra tabella

Max61

Utente Attivo
2 Mar 2014
740
4
18
Salve, sono di nuovo a chiedere aiuto al forum, ho la necessità di accodare i record di una tabella ad un altra già popolata, ho provato questo codice ma mi dà errore id duplicato, come posso risolvere?
PHP:
INSERT INTO cancellazioneserie_storico(idserie, NomeDitta, NomeProdotto, Serie, SerieAttive, Motivo, Stato, DataInsert, DataCanc)
SELECT idserie, NomeDitta, NomeProdotto, Serie, SerieAttive, Motivo, Stato, DataInsert, DataCanc
FROM cancellazioneserie
Chi mi da una mano?
Grazie
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
probabilmante la tabella "cancellazioneserie_storico" contiene gli elementi dell'anno(i) passato(i)
e, probabilmente, non hai curato "idserie" della tabella "cancellazioneserie", facendolo ripartire da un valore in confitto con i precedenti esistenti.

o riguardi come hai valorizzato "idserie" nelle due tabelle sistemandolo, cosa che ti preserverebbe eventuali link alla chiave

oppure se non hai link che usano "idserie" come chive, puoi usare un "escamotage",
trovi il numero delle cifre dato dal valore massimo di "idserie" della tabella "cancellazioneserie" per poter anteporre l'anno ed evitare conflitti

esempio se max(idserie) é uguale a 86420 ovvero 5 cifre, potresti sommare yyyy 0 nnnnn = 2021000000 ovvero

SELECT 2021000000+idserie, NomeDitta, .....

fai sapere
ciao
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
probabilmante la tabella "cancellazioneserie_storico" contiene gli elementi dell'anno(i) passato(i)
e, probabilmente, non hai curato "idserie" della tabella "cancellazioneserie", facendolo ripartire da un valore in confitto con i precedenti esistenti.

o riguardi come hai valorizzato "idserie" nelle due tabelle sistemandolo, cosa che ti preserverebbe eventuali link alla chiave

oppure se non hai link che usano "idserie" come chive, puoi usare un "escamotage",
trovi il numero delle cifre dato dal valore massimo di "idserie" della tabella "cancellazioneserie" per poter anteporre l'anno ed evitare conflitti

esempio se max(idserie) é uguale a 86420 ovvero 5 cifre, potresti sommare yyyy 0 nnnnn = 2021000000 ovvero

SELECT 2021000000+idserie, NomeDitta, .....

fai sapere
ciao

ciao marino51, grazie per la risposta, io invece mi chiedevo se fosse possibile cancellare i record della stessa senza azzerare l'id così da ripartire dall'id successivo all'ultimo cancellato.​

es.: tabella cancellazioneserie arrivata al record numero 1235, la svuoto e quando vado a reinserire i record riparte dal numero 1236, è possibile far ciò?
Grazie
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
dopo la cancellazione puoi fissare il valore da cui ripartire,

ALTER TABLE cancellazioneserie AUTO_INCREMENT=1236;
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
dopo la cancellazione puoi fissare il valore da cui ripartire,

ALTER TABLE cancellazioneserie AUTO_INCREMENT=1236;
Grazie, ho provato ad automatizzare il tutto, ma non ne vengo a capo, con questa query verifico l'ultimo numero in tabella
PHP:
$query="SELECT idserie FROM cancellazioneserie ORDER BY idserie DESC LIMIT 1";
quindi adesso vorrei una query che mi facesse partire la tabella svuotata da quel numero + 1, ho provato così ma ovviamente non funziona...
PHP:
$query = "ALTER TABLE cancellazioneserie AUTO_INCREMENT idserie='$idserie'+1";
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
la query per trovare idserie e per impostare il valore

$query="SELECT 1+max(idserie) FROM cancellazioneserie";
$idserie= ......

$query = "ALTER TABLE cancellazioneserie AUTO_INCREMENT=".$idserie;
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ciao marino51, ho provato a fare così, cancello totalmente la tabella e la ricreo ma non riesco a passargli il valore dell'id
PHP:
$query= "CREATE TABLE IF NOT EXISTS cancellazioneserie
     (
    idserie int(11) NOT NULL PRIMARY KEY,
    NomeDitta varchar(255) NOT NULL,
    NomeProdotto varchar(255) NOT NULL,
    Serie varchar(15) NOT NULL,
    SerieAttive varchar(15) NOT NULL,
    Motivo varchar(255) NOT NULL,
    Stato varchar(255) NOT NULL,
    DataInsert varchar(25) NOT NULL,
    DataCanc varchar(25) NOT NULL
     ) WHERE idserie='$idserie+1'";
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
crea la tabella omettendo la clausola where,
poi esegui la query seguente

$query = "ALTER TABLE cancellazioneserie AUTO_INCREMENT=" . $idserie;

ricorda come trovare $idserie

$query="SELECT 1+max(idserie) FROM cancellazioneserie";
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
crea la tabella omettendo la clausola where,
poi esegui la query seguente

$query = "ALTER TABLE cancellazioneserie AUTO_INCREMENT=" . $idserie;

ricorda come trovare $idserie

$query="SELECT 1+max(idserie) FROM cancellazioneserie";
Fatto!!!
Grazie per l'aiuto
Max61
 
Discussioni simili
Autore Titolo Forum Risposte Data
L accodare URL a link PHP 6
F access ricerca record con apostrofo. MS Access 0
T come ordinare dei record recuperati da due tabelle MySQL 0
T vista record tabellare MySQL 0
K form Inserimento record mysql PHP 2
R query DELETE non cancella i record PHP 1
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
P Pagina modifica record che non funziona PHP 0
S Selezionare ultimo record di una sotto query MySQL 27
A Tabella con bottoni per aggiornamento record PHP 6
S Differenza date record successivi MS Access 7
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S Aggiornamento lista record Database 2
M Esportazione in CSV, salta il primo record PHP 4
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
A Raggruppare record con stessa data PHP 13
R Scorporare array e recuperare record tabella PHP 10
Tommy03 Select in ordine per numero di record MySQL 7
L Creazione di 2 o più record PHP 6
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13
L contare record uguali in file csv PHP 4
M Estrapolare singoli record da intervallo (dal al/inizio fine) MS Access 0
max1974 [MySQL] Estrapolare record finti/inisistenti MySQL 9
G [PHP] Passare dati tra record PHP 4
G Cambiare colore ad un record database mysql MySQL 0
S elimina record sql asp classic Classic ASP 5
S [MS Access] Apertura Maschera su nuov record in base a determinato ID MS Access 0
M leggere con jquery/ajax in una function javascript record di database sql server Javascript 0
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
M [PHP] Selezione record da elenco PHP 24
A [MS Access] Aprire maschera con sottomaschera su ultimo record MS Access 0
C [PHP] Creare un Pulsante che ricopia valori di un campo in altro record PHP 4
C [MySQL] Copiare campi di un record in un nuovo record MySQL 0
O [PHP] Ricerca record tramite post PHP 7
GraceHawk [MS Access] Findfirst per ricerca record MS Access 1
C [PHP] scrivere o aggiornare record in tabella PHP 7
bubino8 Record A in CNAME Domini 2
L Mi trovo nell'impossibilità di eliminare un record nella tabella Database 1
M [PHP] Non calcola l'ultimo record inserito PHP 13
ste80 [MS Access] apertura maschera su record specifico MS Access 6
T PHP+MYSQL: stampare record con numero progressivo PHP 3
G [PHP] SALVARE RECORD ESTRATTI DA DATABASE PHP 6
M [PHP] Aggiornare i dati dei record selezionati PHP 3
M Aggioranre record in tabella PHP MYSQL PHP 2
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
C Contare numero record uguali Database 3
G [ASP] impaginazione record database Classic ASP 13
ste80 [PHP] cancellare/aggiornare record DB PHP 24
A [PHP] [RISOLTO]Compilazione campi form da record db PHP 3

Discussioni simili