Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    cancellare record collegati da tabelle myisam

    Ciao a tutti.
    Mi trovo per la prima volta a dover cancellare dei record da due tabelle contemporaneamente.
    Ho fatto alcune ricerche sul forum e ho trovato l'opzione delete on cascade ma a quanto ho capito si può usare solo sulle tabelle innodb mentre le mie sono myisam.

    La mia situazione è questa.

    tabella usergroups.
    codice:
    idgruppo gruppo
    1          Amministratore
    2          Operatori1
    ..
    7          Operatori6
    tabella users
    codice:
    idusers    user_group
    1              1
    2              2
    3              7
    4              7
    In pratica vorrei che eliminando il gruppo 7 dalla tabella usergroups venissero eliminati anche dalla tabella users gli utenti appartenenti al gruppo 7 (cioè quelli con id 3 e 4).
    Ho provato in questi due modi ma non funzionano

    codice:
    delete from usergroups,users where usergroups.idgruppo = users.user_group
    and usergroups.idgruppo = 7
    codice:
    delete from usergroups ug
    left join users u
    on ug.idgruppo = u.user_group
    where ug.idgruppo = 7
    Mi potete dare una mano? Grazie.

  2. #2
    Adesso funziona.

    codice:
    delete usergroups,users 
    from usergroups,users 
    where usergroups.idgruppo = users.user_group
    and usergroups.idgruppo = 7
    Grazie comunque.

  3. #3
    Rieccomi.

    Su due tabelle funziona ma in un'altra parte del mio programma dovrei fare lo stesso lavoro su 5 tabelle collegate e non ci riesco.

    codice:
    delete tabella1,tabella2,tabella3,tabella4,tabella5
    from tabella1,tabella2,tabella3,tabella4,tabella5
    where tabella1.id = tabella2.id
    and tabella3.id = tabella4.id
    and tabella5.id and tabella1.id= 113
    la query non da errore ma non funziona. Mi aiutate?

    Ah,dimenticavo. Non so se sia importante per la soluzione del mio problema ma la tabella1 è quella che contiene tutti gli id con un campo autoincrementante. Le altre 4 tabelle possono contenere o meno informazioni legate a quel particolare id.
    Quindi quando cancello un id le tabelle coinvolte potrebbero essere solo una (tabella1) fino ad un massimo di tutte e cinque.

  4. #4
    E' sbagliata anche la query che credevo funzionasse.
    Se definisco un gruppo e non assegno nessun utente appartenente a quel gruppo la query di cancellazione non funziona. Se inserisco almeno un utente appartenente al gruppo che voglio rimuovere allora lo cancella.

    Come si fanno le delete a catena?

  5. #5
    Sembra che abbia risolto (sembra )

    codice:
    delete ug,u 
    from usergroups as ug
    left join users u on ug.idgruppo = u.user_group
    where ug.idgruppo = 7
    e sulle 5 tabelle

    codice:
    delete   tab1,
             tab2,
             tab3,
             tab4,
             tab5
    from  tabella1 as tab1
    left join tabella2 as tab2 on tab1.id = tab2.id
    left join tabella3 as tab3 on tab2.id = tab3.id
    left join tabella4 as tab4 on tab3.id = tab4.id
    left join tabella5 as tab5 on tab4.id = tab5.id
    where tab1.id = 112
    Se esistono sistemi migliori (mantenendo le tabelle myisam) fatemi sapere.

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.