Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228

    [MySQL] Cancellare o spostare record non collegati

    Ciao a tutti, ho una tabella contenente una serie di articoli
    Ogni articolo è collegato ad una tabella con i dettagli

    Ad ogni modifica la tabella dell'articolo resta invariata, mentre quella dei dettagli aveva un record aggiunto in modo da mantenere una history di quell'articolo.

    Problema: ora la tabella dei dettagli è diventata piuttosto pesante, quindi necessiterei di ripulirla eliminando i record di dettaglio non richiamati dall'articolo; meglio ancora se si potessero spostare in una tabella archivio_dettagli

    Questa la struttura delle 2 tabelle (molto semplificata)

    codice:
    tabella articolo
    art_id -> id del prodotto
    art_nome -> nome del prodotto
    art_det_id -> indica quale record di dettaglio mostrare
    
    tabella dettagli
    det_id -> id dettaglio
    det_art_id -> id del prodotto a cui si riferisce
    det_descrizione -> descrizione
    In pratica ora ho una cosa tipo questa
    codice:
    art_id | art_nome | art_det_id |
       1   | telefono |      3     |
       2   | lampada  |      2     |
       3   | pila     |      4     |
    
    det_id | det_art_id | det_descrizione |
       1   |      1     | colore blu      |
       2   |      2     | da tavolo       |
       3   |      1     | colore rosso    |
       4   |      3     | tipo AAA        |
    e vorrei ridurla in questa
    codice:
    art_id | art_nome | art_det_id |
       1   | telefono |      3     |
       2   | lampada  |      2     |
       3   | pila     |      4     |
    
    det_id | det_art_id | det_descrizione |
       2   |      2     | da tavolo       |
       3   |      1     | colore rosso    |
       4   |      3     | tipo AAA        |
    come vedete il record con id 1 in dettagli è stato cancellato perché non richiamato dalla tabella
    Se ci fosse modo addirittura di esportarlo in una tabella con la stessa struttura in modo da avere un archivio di questi record tanto meglio.

  2. #2
    REGOLAMENTO [Leggere prima di postare]
    [REGOLAMENTO SEZIONE "DATABASE"]
    Versione 1.0
    Aggiornato al 1/3/2010
    ...

    4) Mettere fra parentesi quadre il nome del database utilizzato con una breve descrizione del problema

    I titoli generici non aiutano chi dovrebbe darvi una mano e non facilitano la ricerca .
    Esempi:

    [MySQL] confronto tra date
    [SQL Server] creazione stored procedure
    [PostgreSQL] creazione trigger
    [Oracle] restore di un database
    [DB2] schedulazione backup
    etc


  3. #3
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    Non so come modificare il titolo e non mi cancella il post per crearne uno nuovo. DB MySQL

  4. #4
    per la copia puoi fare una

    INSERT INTO tabella2 SELECT elenco_campi FROM tabella1 WHERE condizioni

    poi cancelli quello che hai spostato

    DELETE FROM tabella1 WHERE stesse_condizioni_della_INSERT_INTO


  5. #5
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    OK, buon suggerimento.

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.