INSERT avec SELECT et jointures
Salut a tous,
Je suis actuellement bloque sur une requete.
Voici d'abord les 2 tables en question:
Code:
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)
) |
Donc chaque element de tbl_epc peut avoir plusieurs elements de tbl_epc_history lies a lui via fld_epc_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:
Code:
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'); |
Faudrait que j'utilise des INNER JOIN mais j'ai vraiment du mal a m'y faire :(
Une idee?