Salut a tous,
Je suis actuellement bloque sur une requete.
Voici d'abord les 2 tables en question:
Donc chaque element de tbl_epc peut avoir plusieurs elements de tbl_epc_history lies a lui via fld_epc_id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE TABLE tbl_epc ( fld_id integer NOT NULL, cal_status character varying(50) DEFAULT NULL::character varying, ..., CONSTRAINT tbl_epc_pkey PRIMARY KEY (fld_id) ) CREATE TABLE tbl_epc_history ( fld_id integer NOT NULL, fld_epc_id integer, fld_event character varying(250) DEFAULT NULL::character varying, fld_date timestamp without time zone, fld_notes character varying(4000) DEFAULT NULL::character varying, CONSTRAINT tbl_epc_history_pkey PRIMARY KEY (fld_id) )
La requete que je voudrais faire:
Pour chaque EPC dont cal_status = 'Closed' ET ayant un element de tbl_epc_history avec fld_event = 'Project Started' ET n'ayant pas d'element avec fld_event = 'Project Closed', je desire leur rajouter un element dans tbl_epc_history avec
fld_epc_id = celui de l'EPC concerne, fld_event = 'Project Closed' et fld_date = '30-11-2008'.
Voila la requete que j'ai commence mais qui ne fonctionne pas parce que j'arrive pas a filtrer sur l'EPC courrant:
Faudrait que j'utilise des INNER JOIN mais j'ai vraiment du mal a m'y faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 INSERT INTO tbl_epc_history (fld_id,fld_epc_id, fld_event, fld_date) SELECT ( (SELECT 1+MAX(fld_id) FROM tbl_epc_history), (SELECT t2.fld_id FROM tbl_epc AS t2, tbl_epc_history AS t1 WHERE t2.cal_status = 'Closed' AND t2.fld_id NOT IN ( SELECT fld_epc_id FROM tbl_epc_history WHERE fld_event = 'Project Closed') AND t2.fld_id IN ( SELECT fld_epc_id FROM tbl_epc_history WHERE fld_event = 'Project Started') AND t2.fld_id = t1.fld_epc_id), 'Project Closed', '30-11-2008');
Une idee?
Partager