• User

    Query MySql di delete

    Ciao!
    Volevo chiedervi un parere.
    Ho una tabella che mi rappresenta dei cani. Ogni cane ha un "id", un attributo "madre" e un attributo "padre" che sono puntatori a record della stessa tabella. Vorrei fare una query che mi cancella un cane se e solo se esso non è padre di altri cani (per non rompere i legami tra padri-figli).
    Quindi immaginavo una cosa tipo (es. dove cancello il cane con id=50)

    DELETE FROM tabella
    WHERE ID='50' AND
    (SELECT COUNT(*) FROM tabella WHERE PADRE='50')=0

    Pero' la cosa cosi comè non funziona. Consigli? e se gli ID da cancellare sono multipli?

    Grassie! ^_^


  • User

    Forse la strada a cui penso io è un pochino più lunga, ma perchè non fai DUE query ?

    Nella prima verifichi che il Cane da eliminare non sia Padre di nessuno e poi con una IF ti comporti di conseguenza (se non è Padre fai una semplice DELETE invece se è Padre non fai nulla)


  • User

    Ciao!
    Grazie di vermi risposto!
    Per la tua idea : si , ci avevo pensato ma in questo modo dovrei far interagire php e mysql. Fattibile pero' se riuscivo ad ottimizzare con una singola query era piu carino!
    Cmq intanto faro come dicevi anche tu ^_^


  • User

    Quando mi capita auna cosa così di solito faccio una select che mi seleziona tutte le righe da cancellare e poi usanto il $row_query in un ciclo li cancello tutte. esempio

    $query=select....
    $row_query

    do{
    DELETE .... WHERE $row_query['padre']
    } while ($row_query = mysql_fetch_assoc($query));


  • User

    Ciao,
    Grazie a PippoJoe e Mikele di Sagit per l'aiuto!
    a presto ^_^