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

    [SQL SERVER] Delete in select....

    Salve a tutti ho 2 tabelle DOC_MAST e DOC_DETT collegate tra loro da un campo chiamato donumdoc con integrità referenziale e con relazione uno a molti da mast a dett.
    Devo cancellare tutti gli articoli di doc_dett che rispettano delle determinate condizioni su doc_mast così avevo pensato ad una "delete in select".
    L'ho scritta così:

    codice:
    qry = qry & " DELETE FROM dbo.DOC_DETT "
    qry = qry & " WHERE dbo.DOC_DETT.DONUMDOC IN (SELECT dbo.DOC_MAST.DONUMDOC  FROM dbo.DOC_MAST  WHERE dbo.DOC_MAST.DODATA = '" + Replace(dataieri, "'", "''") + "' AND dbo.DOC_MAST.DOCODCLI =  " + Replace(codcli, "'", "''") + " AND dbo.DOC_MAST.DOSTATO =  '" + Replace(stato, "'", "''") + "' AND dbo.DOC_MAST.DONUMDOC < 0) "
    non mi restituisce nessun errore ma non effettua la cancellazione.

    In fondo ho messo questo controllo per vedere se c'è errore in (ASP):

    codice:
    if err = 0 Then	
    	     response.write("OK")
    	     else
    	     response.Write("Errore in fase di cancellamento dati errore numero " & err)
    end if
    E la pagina mi scrive sempre OK, quindi non riscontra errori ma non effettua la cancellazione.

    se stampo la stringa questo è il risultato:

    codice:
    DELETE FROM dbo.DOC_DETT WHERE dbo.DOC_DETT.DONUMDOC IN (SELECT dbo.DOC_MAST.DONUMDOC FROM dbo.DOC_MAST WHERE dbo.DOC_MAST.DODATA = '27/04/2010' AND dbo.DOC_MAST.DOCODCLI = 99 AND dbo.DOC_MAST.DOSTATO = 'T' AND dbo.DOC_MAST.DONUMDOC < 0)
    quindi i valori sono passati correttamente (anche se la select deve restituire non un record solo ma molti più record.

    Come mai non cancella niente??

  2. #2
    se esegui la select interna da sola, ti restituisce dei record?

  3. #3
    esatto ed è un'altra cosa che mi fa incavolare......

    la select da sola funziona perfettamente.

    mi restituisce 5 record che soddisfano la mia condizione!!

    o meglio mi restituisce 5 valori di dbo.DOC_MAST.DONUMDOC

    e allora perchè non cancella niente ???

    almeno mi desse un errore...... invece niente.....

    secondo te cosa potrei provare a fare?

    grazie per l'aiuto

  4. #4
    quei 5 numeri che ti restituisce esistono nella colonna DONUMDOC di DOC_DETT?

  5. #5
    eccolo la...

    ne mancava uno!!!

    Grazie optime

    gentilissimo come sempre!!!

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.