Corsi on-line

Query nidificate per la cancellazione di record

In questo breve post vedremo come sia possibile eliminare uno o più record da una tabella utilizzando un query nidificata costruita sulla base dei dati contenuti in una seconda tabella; per fare un semplice esempio, analizziamo la struttura delle seguenti due tabelle:

Tabella Automobili
id_automobili INT(11),
modello VARCHAR(40),
marca VARCHAR(20)

Tabella Proprietari
id_proprietari INT(11),
id_automobili INT(11),
nome_cognomeVARCHAR(80),
incidenti INT(2)

Ora immaginiamo di essere una compagnia di assicurazioni particolarmente severa e di voler eliminare dalla tabella dei Proprietari tutti quelli che hanno avuto più di 2 incidenti con la stessa automobile; in questo caso la query da utilizzare dovrà essere la seguente:

DELETE FROM Automobili WHERE id_automobili IN (SELECT id_automobili FROM Proprietari GROUP BY id_automobili HAVING COUNT(*) >= 2)

Tutti i proprietari registrati con meno di 2 incidenti non verranno invece cancellati.

Post correlati
  • ciao
    scusa non capisco un punto della select
    (SELECT id_automobili FROM incidenti GROUP BY id_automobili HAVING …
    devo avere una tabella incidenti?

  • Claudio Garau

    Query corretta, grazie per la segnalazione!

I più letti del mese
Tematiche