Par exemple,Comment supprimer deux tables en même temps?
DELETE table1., table2. FROM table1, table2 WHERE (((table1.[Field1])=table2.[Field1]));
Par exemple,Comment supprimer deux tables en même temps?
DELETE table1., table2. FROM table1, table2 WHERE (((table1.[Field1])=table2.[Field1]));
Vous pouvez utiliser DELETE CASCADE qui supprime un élément et tout autre qui en dépend. Par exemple, si vous avez une table d'étudiant, une table de cours et une table d'abonnement qui énumère tous les cours qu'un étudiant veut suivre, vous pouvez supprimer un étudiant et n'importe quelle entrée liée à lui dans le tableau d'abonnement avec CASCADE.
Je suggérerais emboîtés Curseurs:
DECLARE @OuterVar [datatype];
DECLARE @OuterPKey [datatype];
DECLARE @InnerPKey [datatype];
DECLARE OuterCursor CURSOR
FOR SELECT table1.[Field1], table1.[PrimaryKey]
FROM table1;
OPEN OuterCursor
FETCH NEXT FROM OuterCursor INTO @OuterVar, @OuterPKey;
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE InnerCursor CURSOR
FOR SELECT table2.[PrimaryKey]
FROM table2
WHERE table2.[Field2] = @OuterVar;
OPEN InnerCursor;
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM table1 WHERE [PrimaryKey] = @OuterPKey;
DELETE FROM table2 WHERE [PrimaryKey] = @InnerPKey;
FETCH NEXT FROM InnerCursor INTO @InnerPKey;
END;
CLOSE InnerCursor;
DEALLOCATE InnerCursor;
FETCH NEXT FROM OuterCursor INTO @OuterVar, @OuterPKey;
END;
CLOSE OuterCursor;
DEALLOCATE OuterCursor;
Cette boucle permet de faire défiler tous les enregistrements dans le tableau 1, et pour chaque enregistrement, il trouvera les enregistrements dans table2 où les valeurs de table1 [Field1] et table2. . [Field2] sont les mêmes. Ensuite, il va supprimer les deux enregistrements.
Pourquoi ne pouvez-vous pas supprimer un par un? – Igoranze
Il n'y a pas de solution ANSI-SQL car le standard SQL ne le permet pas (et en plus: '[Field1]' n'est pas un identifiant valide dans ANSI SQL pour commencer). Mais certains SGBD ont des extensions qui vous permettraient de le faire. Quel SGBD utilisez-vous? Postgres? Oracle? –