Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Aiuto Query DELETE

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243

    Aiuto Query DELETE

    Ciao,
    Ho le seguenti tabelle:


    SOGGETTI

    id
    idu
    idev
    datasogg
    soggetto


    ATTIVITA

    id
    idu
    idev
    attivita
    checking
    quantita
    costo
    contatto
    datacomu
    dataveri
    datamont
    datasmont
    note



    Avrei bisogno di ottenere il seguente risultato da una query DELETE.

    Le relazioni sono:
    Nella tabella SOGGETTI esiste un elenco di soggetti diversi per un detereminato evento.

    I soggetti sono legati all'evento tramite IDEV.

    Ogni soggetto possiede una moltitudine di attività.

    Soggetti e attività sono in relazione tramite IDU
    Tutte le attività appartenenti a un dato soggetto possiedono IDU identico a IDU del soggetto.

    Le attività sono legate all'evento tramite IDEV.


    Quello di cui ho bisogno è UNA O PIU query che faccia/no il DELETE delle attività di un dato evento dove checking = ''.

    Il problema e che quando vengono eliminate tutte le attività con il checking = '' di un soggetto, anche il soggetto deve essere eliminato, al contrario se rimane anche una sola attività legata a quel soggetto, quest'ultimo deve rimanere inalterato.


    Grazie anticipatamente per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    _

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Mi basterebbe anche un suggerimento..cqm se è molto complicato provero ad esaminare la cosa con calma...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    ...

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Direi di fare cosi...non l'ho testato ma credo funzioni tranquillamente:

    Codice PHP:
    DELETE soggetti.*, attivita.* FROM soggetti sattivita a WHERE s.idu a.idu AND checking '' 
    bye^^

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Ciao... GRAZIE. ma...


    Avevo già provato ed ovviamente cancella anche il soggetto ma potrebbero esserci ancora delle attività legate ad esso...

    Pero nel frattempo credo di aver trovato una soluzione anche se ci sto litigando... magari mi puoi aiutare tu...


    PRIMA QUERY:
    DELETE FROM attivita WHERE idev = '75' AND checking = ''

    Cancello tutte le attività senza checking


    SECONDA QUERY:
    SELECT *

    FROM soggetti s

    LEFT JOIN (SELECT idu FROM attivita WHERE idev = '75') a ON s.idu = a.idu

    WHERE s.idu IS NULL AND s.idev = '75'

    Concettualmente vorrei fare un select dei soggetti di un dato IDEV con IDU diverso da IDU delle attività dello stesso IDEV.

    Cosi facendo troverei i soggetti che non poseggono più attività.. una volta verificato che la select mi estrapoli effettivamente i record corretti potrei sempre trasformare la query in una delete...

    PURTROPPO e non capisco il perchè la query non mi restituisce nulla....

    Anche se questa mi sembra cmq la strada da percorrere

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    La query DELETE falla dopo la SELECT, altrimenti quando cerchi i record lui vede già vuota la riga della tabella ATTIVITA con IDEV = 75...

    Cmq credo di non aver capito cosa tu voglia fare^^'

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    No perchè se prima cancello i soggetti potrebbe esserci ancora qualche attività legata ad essi...

    Quello che vorrei fare è spiegato (credo bene) all'inizio..

    cmq in parole povere vorrei cancellare le attività che concettualmente sono figlie di soggetti...

    una volta che ho cancellato le attività devo verificare che il padre di un gruppo di attività sia rimasto senza figli (attività) se sono senza figli cancello anche il soggetto che è padre...


    quindi farei

    DELETE FROM attivita WHERE idev = '75' AND checking = ''
    Cencello le attività non selezionate che potrebbero cmq anche essere tutte le attività di un dato soggetto...

    In seconda battuta per determinare quali soggetti posso cancellare, devo estrapolare tutti i soggetti che hanno IDU che non compare nella tabella attività...

    Oviamente sempre tenendo conto del legame all evento tramite IDEV... quindi per i secord che in soggetti e attività hanno lo tsesso IDEV..

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    che stupido... ho fatto 2 grossolani errori... la query corretta è

    SELECT *

    FROM soggetti s

    LEFT JOIN (SELECT idu FROM attivita WHERE idev = '75' GROUP BY idu) a ON s.idu = a.idu

    WHERE a.idu IS NULL AND s.idev = '75'


    così ho estrapolato i record soggetti che non hanno più attività... ora basta farne il delete..


    grazie cmq

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.