Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di ramengo
    Registrato dal
    Mar 2001
    Messaggi
    187

    Delete su 2 tabelle è possibile con una sola query?

    Salve nel mio DB ho 2 Tabelle
    -Acquisti
    -Clienti

    Non sono tabelle relazionate tra loro ma il campo IDCLIENTE mi aggiorna anche il campo CLIENTE nella tabella Acquisti.

    Quando elimino un cliente dal DB voglio che tutti gli acquisti di questo Cliente (ODCLIENTE) vengano eliminati dalla tabella acquisti.

    COme è la query???


    Grazie

  2. #2
    non credo sia possibile.
    Se ele tabelle fossero state relazionate era possibile specificare all'atto della creazione della tabella con la clausola ON DELETE CASCADE l'opzione di cancellare i record della tabella figlia quando si cancella un record della tabella padre.
    La sintassi del comando delete non permette di specificare due nomi di tabella diversi (se provi a scrivere qualcosa come "delete tabella1, tabella where condizioni" da un errore ORA-00933 command sql not properly ended).



  3. #3
    devi creare un'istruzione di delete che contenga anche i join tra le due tabelle... così dovrebbe cancellarti anche i dati del cliente contenuti nella tabella acquisti.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  4. #4
    Utente di HTML.it L'avatar di ramengo
    Registrato dal
    Mar 2001
    Messaggi
    187
    Grazie Lady.

    Ho provato varie query con inner join ma mi da errore di sintassi.
    Mi puoi dire dove sta l'errore??

    DELETE FROM CLIENTI
    INNER JOIN ACQUISTI ON CLIENTE=ID_CLIENTE
    WHERE ID_CLIENTE = 1

    mi sa che è un po incasinata per via dei vari test.....

    Mi dai una mano?

  5. #5
    Senti, io ho fatto delle prove ma mi sa che ha ragione caimano73, non si può fare. :master:
    in una delete non riconosce i campi delle tabelle perchè non riesce a creare le relazioni.
    quindi le cose sono due:
    1) ti crei le relazioni, così se elimini un cliente automaticamente vengono eliminati pure gli acquisti del cliente stesso.
    2) prima di eliminare il cliente ti memorizzi in una variabile l'id del cliente scelto e poi procedi all'eliminazione, con due istruzioni separate, prima degli acquisti e poi del cliente.

    mi dispiace, ma credo che non ci siano altre possibilità.


    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it L'avatar di ramengo
    Registrato dal
    Mar 2001
    Messaggi
    187
    mi sa che ci dobbiamo rassegnare..
    Ho provato con la creazione query di access...

    NIENTE...

    DELETE ACQUISTI.IDCLIENTE, Clienti.ID
    FROM Clienti INNER JOIN ACQUISTI ON Clienti.ID = ACQUISTI.IDCLIENTE
    WHERE (((ACQUISTI.IDCLIENTE)=1));


    Ho fatto la doppia query pechè non posso relazionare il DB..

    Comunque sono sicuro che un modo più pulito esiste...
    Se lo trovo io o voi, postiamolo.

    GRAZIE A TUTTI E DUE COMUNQUE

  7. #7
    Originariamente inviato da ramengo
    mi sa che ci dobbiamo rassegnare..
    Ho provato con la creazione query di access...

    NIENTE...

    DELETE ACQUISTI.IDCLIENTE, Clienti.ID
    FROM Clienti INNER JOIN ACQUISTI ON Clienti.ID = ACQUISTI.IDCLIENTE
    WHERE (((ACQUISTI.IDCLIENTE)=1));


    Ho fatto la doppia query pechè non posso relazionare il DB..

    Comunque sono sicuro che un modo più pulito esiste...
    Se lo trovo io o voi, postiamolo.

    GRAZIE A TUTTI E DUE COMUNQUE
    stesse prove che avevo fatto io...
    tranquillo, pure secondo me un modo più lineare ci deve essere e se lo trovo te lo faccio sapere.
    ciao

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  8. #8
    Utente di HTML.it L'avatar di ramengo
    Registrato dal
    Mar 2001
    Messaggi
    187
    Perfetto..
    Grazie LadyBlu.

    A presto

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.