Query a go go!

Ciao a tutti,

sapete .... se una cosa va storta ci andrà! Ecco quello che mi è successo in sintesi.

Hanno creato un database senza vincoli ne chiavi e mi son trovato con una tabella piena zeppa di records inutili legati a niente.

TABELLA 1

Dati Clienti

TABELLA 2

Preferenze

Ora la tabella Preferenze ha circa 5000 record ed ogni record ha un idcliente che dovrebbe (e dico dovrebbe perchè non è stato così) impostare una chiave con la cancellazione a cascata.

Ok ci sei arrivato anche tu! Sono alle prese con la cancellazione a manina dei records nella tabella Preferenze.  :idiot:

C'è una query che mi può aiutare a cancellare tutti i record nella tabella Preferenze che non hanno nessun legame con la tabella clienti?

Mi potete salvare da questa demenza?

 :bye:

inviato 10 anni fa
ulisse
X 0 X

Supponendo che la tabella 1 abbia un IDcliente e che la tabella 2 abbia un IDpreferenza con la seguente query scopri tutti gli IDpreferenza che non sono legati ad un IDcliente realmente presente in tabella 1

SELECT tabella2.IDpreferenza
FROM tabella2
LEFT JOIN tabella1 ON tabella2.IDcliente = tabella1.IDcliente
WHERE tabella1.IDcliente IS NULL

Recuperati questi IDpreferenza per cancellarli ti basta una DELETE

DELETE FROM tabella2 WHERE IDpreferenza IN (23,74,147,164)

ovviamente i numeri 23,74,147,164 sono da sostituire con gli IDpreferenza ottenuti prima.

P.S.: la prossima volta usa un titolo per il topic più pertinente.  :police:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie per l'aiuto Gianni. scusa per il titolo  :bye:

risposto 10 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda