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

    query delete from select

    Ciao a tutti.
    Devo affrontare un problema relativamente semplice.

    Sto lavorando in php e vorrei fare una query di DELETE che cancelli tutti i record che ricavo con una query di select.

    Spero di essermi spiegato bene.
    è possibile compiere questa operazione con una sola query, oppure sono costratto a ciclare tutti i record provenienti dalla query di select e cancellarli uno ad uno con tante query di delete???

    Nella mia testa la query che mi servirebbe dovrebbe essere una cosa del tipo: "delete from SELECT * FROM ecc..." è possibile farla????

    Grazie per l'aiuto.

    p.s.: purtroppo non posso fare una normale query di delete perchè i record che devo cancellare li ottengo solo con una select con 4 join!
    Spero di essere stato chiaro

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non mi ricordo mai la sintassi precisa, e se è supportata da mysql, ma sono sicuro di aver già usato una sintassi cosi con postgres:

    codice:
    DELETE FROM TABELLA WHERE ID=(SELECT id FROM TABELLA WHERE campo='dacancellare');
    anche se l'esempio nonrende onore...


    (uno dice, con queste premesse che cavolo rispondi a fare?)
    è vero

  3. #3
    Grazie per la veloce risposta

    Ti posto la mia query:
    DELETE FROM lezioni WHERE id_lezione=(SELECT lezioni.id_lezione FROM lezioni INNER JOIN unita ON (lezioni.id_unita=unita.id_unita) INNER JOIN moduli ON (unita.id_mod=moduli.id_mod) INNER JOIN corsi ON (moduli.id_corso=corsi.id_corso) WHERE (corsi.id_corso = 16) AND (lezioni.giorno = '2005-9-18'))

    l'errore che ricevo è "You can't specify target table 'lezioni' for update in FROM clause"

    come vedi io vorrei cancellare dalla tabella lezioni tutti i record dove id_lezione è uguale al recordset proveniente da una query di select che chiaramente mi torna più di un solo id_lezione

    Puoi dirmi qualcosa in più su l'errore che ricevo o puoi suggerirmi qualche sito dove poter approfondire la sintassi di una query come quella da te consigliata: "DELETE FROM TABELLA WHERE ID=(SELECT id FROM TABELLA WHERE campo='dacancellare'); "

    Grazie per l'aiuto!!!

  4. #4
    La sintassi per il DELETE multitabella e':
    codice:
    DELETE tabella
    FROM tabella1, tabella2, tabella3
    where condizione1
    and condizione2
    and condizione3
    ecc ...
    qui hai il link alla pagina del manuale

    http://dev.mysql.com/doc/mysql/en/delete.html

    ovviamente con mysql >= 4.0.2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.