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

    [MYSQL]Delete in un sottoinsieme

    Dove è l'errore nella sequente query?O Meglio, come si scrive?

    Codice PHP:
    delete from figlia where codice in (select codice from figlia where codice not in (select codice1 from padre)) 
    Cioè, ho un insieme di codici che sono presenti in una tabella figlia ma non nella tabella padre che li ottengo così:
    Codice PHP:
    select codice from figlia where codice not in (select codice1 from padre
    Successivamente su questi record della tabella figlia devo farci una delete. Come si scrive la query?

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    delete f,p.* from figlia as f
    left join padre as p
    on f.codice = p.codice1
    where p.codice1 is null

  3. #3
    Originariamente inviato da nicola75ss
    codice:
    delete f,p.* from figlia as f
    left join padre as p
    on f.codice = p.codice1
    where p.codice1 is null
    Ti ringrazio per la risposta veloce...
    estendo un attimo la richiesta.

    Ho usato la seguente query
    Codice PHP:
    select codice from figlia where codice not in (select codice1 from padre
    per stabilire se ci sono degli orfani. Ho supposto perà che la chiave sia semplice e quindi fatta da un solo campo (codice), ma se la chiave fosse composta da codice, codice1 e codice2, come cambierebbe questo genere di query?
    C'è un modo più efficiente di scriverla?

    Grazie ancora.

  4. #4
    Risposta al volo senza averla provata... metti semplicemente codice1,codice2 al posto di codice.
    Purchè entrame la tab padre e figlia abbiano due campi codice
    L'operatore not in è di tipo insiemistico e lavora su dati che devono avere la stessa struttura., quindi la select interna su padre deve restituire un insieme di dati che hanno la stessa struttura di quelli di figlia nella clausola where.

    Per quanto riguarda l'ottimizzazione ... cosa ti sembra che non vada in quella scritta?

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.