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

Discussione: [SQL] Delete Complesso

  1. #1

    [SQL] Delete Complesso

    Premessa
    2 tabelle: tab1 e tab2

    campi:
    tab1: tab1_campo1 e tab1_campo2
    tab2: tab2_campo1 e tab2_campo2

    su tab1 ho 3 record, su tab2 ho, oltre ai 3 record di tab1 altri 4 record in +, ok?

    Obiettivo:
    sto cercando di fare in modo, con un SQL, di cancellare dalla tab2 i record che ha in + rispetto alla tab1 senza fare degli update strani, solo un delete secco,

    vi sentite in grado di darmi una mano?

    ty
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    codice:
    DELETE * FROM Tab2 Left Join Tab1 On Tab1.Campo1 <> Tab2.Campo1 AND Tab1.Campo2 <> Tab2.Campo2
    non l'ho provato (qualche riserva sul left della join) però dovrebbe andare

  3. #3
    non mi e' chiarissimo il tuo problema, ma ..

    non potresti fare una LEFT JOIN e poi cancellare quelli dove la Join falisce?

    Es:
    DELETE tab2
    FROM tab2 LEFT JOIN tab1 ON tab2.campo1 = tab1.campo1 AND tab2.campo2 = tab1.campo2
    where tab1.campo1 IS NULL AND tab1.campo2 IS NULL

    non l'ho provato .. pero' una cosa del genere dovrebbe andare..
    Non può piovere per sempre http://forum.html.it/forum/faccine/064.gif

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    90
    devi fare così :

    delete tab2
    from tab1 t1, tab2 t2
    where t1.tab1_campo1 = t2.tab2_campo1 and
    t1.tab1_campo2 = t2.tab2_campo2

    note :
    (1) t1 e t2 sono gli 'alias' delle tabelle,servono,in caso di nomi di campo uguali, ad indicare da quale tabella considerare il campo stesso.
    (2) i campi considerati nella "where" devono essere la chiave di corrispondenza tra i records delle due tabelle (p.es. un codice cliente, un codice articolo, un cap.......)
    ciao.

  5. #5
    ciao darkblOOd
    ... ho paura che il DELETE * FROM dia dei problemi ...

    devi specificare tab2 ...
    Non può piovere per sempre http://forum.html.it/forum/faccine/064.gif

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da dieghito101
    ciao darkblOOd
    ... ho paura che il DELETE * FROM dia dei problemi ...

    devi specificare tab2 ...
    infatti

    cmq per risolvere dovrebbe fare una join che restituisce i valori uguali e cancellarli

  7. #7
    ma lui non deve mica cancellare quelli diversi?

    io faccio la left join, tab1 mi restituira' null su quelli non corrispondenti e io cancello quelli...
    Non può piovere per sempre http://forum.html.it/forum/faccine/064.gif

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ecco, questa ti lascia in tab2 i valori che NON esistono in tab1, cioè quelli in +
    codice:
    delete tab2 from 
    (select tab2.campo1,tab2.campo2 
    from tab2 
    left join tab1 on tab1.campo1 = tab2.campo1 and tab1.campo2 = tab2.campo2
    where tab1.campo1 is not null and tab1.campo2  is not null) as t1
    where t1.campo1=tab2.campo1 and t1.campo2 = tab2.campo2

    è quello che cercavi?

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ah, lui deve cancellare quelli in + .....allora devi cambiare lo script che ho appena postato e includere nella join quelli null

    (praticamente devi togliere il NOT prima delle due parole chiave NULL)

  10. #10
    calma un attimo, io devo cancellare quelli diversi, adesso provo le vostre soluzioni, poi v faccio sapere
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

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.