Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [Mysql] Delete e Join

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    [Mysql] Delete e Join

    Ciao ragazzi/e ho bisogno di voi.. ho queste 3 tabelle
    i campi sottolineati sono le chiavi per le rispettive tabelle e la relazione tra le due è per i campi
    idsocieta
    idfiliale
    idregistrazione
    anno


    Tab: registrazione_eve
    idsocieta
    idfiliale
    idregistrazione
    anno
    idevento (relazione con evento)
    data

    Tab: board_lavori
    idsocieta
    idfiliale
    idregistrazione
    anno
    id_articolo

    Tab: evento

    idevento
    categoria


    la tabella registrazione_eve ha anche una relazione con la tabella evento tramite il campo idevento (che ne identifica la categoria di appartenenza)

    la relazione è 1:N ovvero registrazione_eve può avere in relazione più record di board_lavori_dt

    io vorrei fare in modo di cancellare tutti i record della tabella registrazione_eve che sono più vecchi di 3 mesi e la categoria dell' evento sia ad esempio 1 o 2 (tramite appunto la relazione con la tab evento) ovviamente il mio problema è come cancellare anche i record relativi nella controparte board_lavori_dt


    help please!
    Ultima modifica di Urbanus; 09-04-2015 a 16:00
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  2. #2
    Secondo me deviaggiungere l' id dell' evento nella tabella board_lavori sennò non sai quale recordset eliminare

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    dici? e come faresti poi la delete?
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  4. #4
    metti tutte le chiavi esterne dell' id_evento come FOREIGN KEY con ON DELETE = CASCADE, così quando cancelli l' evento automaticamente ti cancella tutte le righe delle altre tabelle relative a quell' evento

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova se funziona una cosa tipo questa
    codice:
    DELETE registrazione_eve.*, board_lavori.*
        FROM registrazione_eve 
            INNER JOIN board_lavori 
                ON registrazione_eve.idregistrazione = board_lavori.idregistrazione
            INNER JOIN evento 
                ON registrazione_eve.idevento = evento.idevento
        WHERE registrazione_eve.data < (NOW() - INTERVAL 3 MONTH) 
            AND evento.idevento IN (1, 2)
    la parte di join ti conviene testarla prima con una SELECT

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    direi ottima la query, sistemato il join con i riferimenti di società/filiale va che è una meraviglia
    io per il controllo della data però faccio " and (curdate() > registrazione_eve.data + INTERVAL 3 MONTH)

    cmq grazie!!!
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

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 © 2025 vBulletin Solutions, Inc. All rights reserved.