Bonjour,

Voila je suis bloqué sur un petit problème tout bébéte, mais ne n'arrive pas à m'en sortir malgrès avoir écumé les forums et sites sur SQL.
Pour info je fais mes requêtes sous SQL Server.

Je joue sur 4 petites tables:

FIGURE
ID|NAME
1 |FIGURE1
2 |FIGURE2
3 |FIGURE3
4 |FIGURE4
5 |FIGURE5

CATEGORY_TYPE
ID|TYPE
1 |COULEUR
2 |FORME


CATEGORY
ID|VALUE|CATEGORY_TYPE_ID
1 |ROND |2
2 |CARRE|2
3 |VERT |1
4 |ROUGE|1
5 |JAUNE |1

ou CATEGORY_TYPE_ID est une FK vers CATEGORY_TYPE/ID

FORME_COLLECTION
ID_CATEGORY|ID_FIGURE
1|1
3|1
4|2
2|3
5|3
3|4
1|5
4|5

ou ID_CATEGORY est une FK vers CATEGORY/ID
et ID_FIGURE est une FK vers FIGURE/ID

En sachant qu'une figure ne couvre pas forcement toute les category_type, c'est à dire comme les figures 2 et 4 qui n'ont pas d'affectation à une forme dans FORME_COLLECTION.

Mon besoin étant de récuperer TOUTE la liste des figures, avec la forme associé, même si la figure n'en posséde pas.

En gros j'aimerais récupérer:
FIGNAME|FORMNAME
FIGURE1|ROND
FIGURE2|NULL
FIGURE3|CARRE
FIGURE4|NULL
FIGURE5|ROND

Seulement je n'arrive pas à effectuer une jointure externe qui me ramène tout de même les figures ne possédant pas de forme.

Voici ma requête:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT 
distinct 
T1.NAME AS FIGNAME,
T13.VALUE AS FORMNAME
FROM 
FIGURE T1 LEFT OUTER JOIN FORME_COLLECTION T2 ON T1.ID = T2.ID_FIGURE,
CATEGORY T3,
CATEGORY_TYPE T4
WHERE 
T2.ID_CATEGORY = T3.ID
AND T3.CATEGORY_TYPE_ID = T4.ID
AND T4.TYPE = 'FORME'
Cette requête me retourne uniquement les figure possédant une forme:

FIGNAME|FORMNAME
FIGURE1|ROND
FIGURE3|CARRE
FIGURE5|ROND

Pourriez-vous m'aider? J'ai trituré ma jointure dans tous les sens mais rien n'y fait.

Merci beaucoup.

Cordialement,