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

    [mysql] problema costruzione query

    ciao,

    avrei una difficoltà nella costruzione di una query.
    in pratica ho la tabella:

    immobile -->id_progetto,nome_immobile

    poi altre 5 tabelle:

    fondamenta
    struttura
    tetto
    impianti
    finitura

    che contengono l'id_progetto correlato alla tabella immobile.

    Ora io vorrei che alla cancellazione di un immobile il cui id è id_progetto, si cancellino anche i records delle altre tabelle relative a quel id_progetto.
    non posso usare ON DELETE perchè ho solo tabelle MyIsam

    iniziando:


    codice:
    DELETE FROM immobile,
                fondamenta,
                struttura,
                tetto,
                impianti,
                finitura 
         WHERE immobile.id_progetto = ......


    dènkiu

  2. #2
    io farei n query diverse. Piuttosto di fare un'unica query enorme che deve fare prima l'and logico tra le tabelle coinvolte e poi andare a spulciarsi i record che soddisfano la condizione.

    direi che risulta molto più leggero fare n query semplicissime del calibro di:

    codice:
    DELETE FROM tabella WHERE id=5






    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    si ok, anche questa è una soluzione. grazie

    però mi rimane la curiosità di sapere, se non altro per imparare qualcosa di nuovo, di come andrebbe costruita la query in quel modo che ho descritto all'inizio.

    grazie

  4. #4
    una query di delete così non l'ho mai costruita, quindi onde evitare di portarti sulla strada sbagliata ti posto direttamente il link al manuale: http://dev.mysql.com/doc/refman/4.1/en/delete.html


    sembra che si possa impostare il DELETE direttamente come se fosse una select, addirittura con i join; prova a dare un'occhiata o aspetta il parere di qualcuno più esperto di me





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    delete multitable....

    codice:
    DELETE tab1, tab2, tab3
    FROM tab1, tab2, tab3
    where tab1.id = tab2.id .... ecc
    non si possono usare gli alias.

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

  6. #6
    seguendo quello che c'è scritto nel manuale, ho provato a fare in questo modo:

    codice:
    DELETE immobile,tetto,finitura FROM immobile, tetto,finitura WHERE immobile.id_progetto =  tetto.id_progetto AND immobile.id_progetto = finitura.id_progetto AND immobile.id_progetto = 1
    tramite phpmyadmin, ho eseguito la query e non mi da nessun errore( anzi mi chiede di confermare il delete ) però di fatto non cancella nulla (Righe cancellate: 0).

    questo riga esiste: immobile.id_progetto = 1


  7. #7
    se al posto del DELETE metti una SELECT ti estrae i record che soddisfano la richiesta? soprattutto, sei sicuro che questa condizione sia realmente verificata? WHERE immobile.id_progetto = tetto.id_progetto AND immobile.id_progetto = finitura.id_progetto




    prova a verificare...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.