1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
--Pour tester :
drop table if exists activite;
create table activite
(
id_activite bigint
);
insert into activite values(1),(3),(5),(7);
insert into activite values(2),(4),(6),(8);
insert into activite values(1),(3),(5),(7);
insert into activite values(2),(4),(6),(8);
select * from activite;
drop table if exists liaison_activ_mag;
create table liaison_activ_mag
(
idactiv bigint
);
insert into liaison_activ_mag values(1),(3),(5),(7);
insert into liaison_activ_mag values(1),(3),(5),(7);
select * from liaison_activ_mag;
--Pour résoudre le probleme des NOT IN et IN
--Les NOT IN et IN sont tres couteux, il est preferable d'utiliser
--des tournures avec join et tester la realisation du join
--Recuperation rapide des id a dropper
select foo_activite.id_activite from
(select * from activite) as foo_activite
left join
(select idactiv from liaison_activ_mag) as foo_liaison
on (foo_activite.id_activite = foo_liaison.idactiv)
where foo_liaison.idactiv is null;
--Tournure pour le drop (j'ai pas mieux):
delete from activite using
(
select foo_activite.id_activite from
(select * from activite) as foo_activite
left join
(select idactiv from liaison_activ_mag) as foo_liaison
on (foo_activite.id_activite = foo_liaison.idactiv)
where foo_liaison.idactiv is null
) as to_drop
where activite.id_activite=to_drop.id_activite;
select * from activite;
--Pour résoudre le probleme des delete massif
drop table if exists activite_bis;
create table activite_bis as
select foo_activite.* from
(select * from activite) as foo_activite
left join
(select distinct idactiv from liaison_activ_mag) as foo_liaison
on (foo_activite.id_activite = foo_liaison.idactiv)
where foo_liaison.idactiv is not null;
drop table if exists activite;
create table activite as
select * from activite_bis;
drop table if exists activite_bis;
select * from activite;
/* NOTE IMPORTANTE */
--Il faut remettre pk, fk, unique, indexes |
Partager