Bonjour,
je patauge dans les autojointures, ça me paraisait simple pourtant je m'en sors pas.
j'ai donc une table définie avec un champ parent en FK :
Je veux récupérer tous les enregistrements de ma table, avec une colonne supp qui reprend l'intitulé en clair du parent, cad nom.
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 CREATE TABLE t_catalogue ( id serial NOT NULL, parent int4, nom varchar(30) NOT NULL, public varchar(100), duree int2, objectif text, parties text, prerequis text, moyens varchar(50), prix numeric(6,2), contact varchar(40), commentaires text, CONSTRAINT t_catalogue_pkey PRIMARY KEY (id), CONSTRAINT t_catalogue_parent_fkey FOREIGN KEY (parent) REFERENCES t_catalogue (id) ON UPDATE RESTRICT ON DELETE RESTRICT)
j'ai essayé ça :
et j'ai comme erreur que la relation "tc" n'existe pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT tc.idmodulecycle, tc.nomcyclemodule, tc2.nomcyclemodule as papa FROM t_catalogue tc, t_catalogue tc2 LEFT OUTER JOIN tc2 ON (tc.parent = tc2.idmodulecycle)j'ai pas le droit d'utiliser un alias dans le LEFT JOIN?
j'ai essayé aussi :
mais je ne récupère pas les enregistrements qui n'ont pas de parent
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 SELECT tc.commentaires , tc.contact , tc.duree , tc.idmodulecycle , tc.moyens , tc.nomcyclemodule , tc.objectif , tc.parent , tc.parties , tc.prerequis , tc.prix , tc2.nomcyclemodule, tc.public FROM t_catalogue tc, t_catalogue tc2 WHERE tc.parent = tc2.idmodulecycle
j'ai essayé ça:
mais ça me fait une sorte de produit cartésien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE tc.parent = tc2.idmodulecycle and tc2.parent is null
quelqu'un peut-il m'aiguiller?
merci
Partager