Bonjour,
je perds beaucoup de temps sur une évolution
pour des raisons de confidentialités je simplifie le sujet.
Voici ma demande, j'ai 3 tables :
- CLIENT : les clients
- TYPE_CLIENT : le type de client
- TYPE_LIBELLE : la traduction du libellé en fonction du code langue
- LANGUES : la table des langues (que je ne vais pas créer)
la table CLIENT a une clé étrangère qui pointe sur la clé primaire de la table TYPE_CLIENT.
la table TYPE_CLIENT
la table TYPE_LIBELLE est une table d'association entre LANGUES et TYPE_CLIENT et contient le libellé dans la langue choisie.
Il y une clé étragère qui pointe sur un champ de la table TYPE_LIBELLE + LANGUE (que je ne vais pas décrire)
Je dois récupérer des champs de la tables CLIENT (peu importe des champs) + le libellé de la table TYPE_LIBELLE.
La nouveauté c'est que le champs qui relie la table CLIENT à TYPE_CLIENT peut être NULL et compléter plus tard. Et là tout devient compliqué avec les jointures
voici les tables (je rappelle que pour des raisons de confidentialités j'ai pris un exemple aléatoire, donc ne pas me troller violamment que le choix des noms de champs sont pourris ou que je devrais faire des tables autrement car ce n'est pas le sujet de ma demande... ^^)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE AAA_TYPE_CLIENT ( idTypeClient int not null, constraint idTypeClient_pk primary key (idTypeClient), )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE AAA_TYPE_LIBELLE ( id int not null, idLangue int not null, idTypeClient int not null, libelle nvarchar(255) not null, constraint id_pk primary key (id), -- je ne ferai pas la FK ni les autres règles de contraintes d'intégrités qui va sur langue dans mon exemple constraint idTypeClient_fk foreign key (idTypeClient) references AAA_TYPE_CLIENT(idTypeClient) )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE AAA_CLIENT ( idClient int not null, idTypeClient int NULL, constraint client_pk primary key (idClient), constraint idTypeClient2_fk foreign key (idTypeClient) references AAA_TYPE_CLIENT(idTypeClient) )
// les insert
// mon ancienne requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 insert into AAA_TYPE_CLIENT values (1); insert into AAA_CLIENT values (1, 1); insert into AAA_CLIENT values (2, 1); insert into AAA_CLIENT values (3, 1); insert into AAA_CLIENT values (4, null); insert into AAA_TYPE_LIBELLE values (1, 1, 1, 'azerty');
il retourne 3 résultats mais il me faut la ligne manquante avec pour valeur null ou blanc car cette dernière à une clé étangère à null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT D.idClient, L.libelle FROM AAA_CLIENT D INNER JOIN AAA_TYPE_CLIENT T on D.idTypeClient = T.idTypeClient INNER JOIN AAA_TYPE_LIBELLE L on T.idTypeClient = L.idTypeClient WHERE L.idLangue = 1
j'ai mes 4 résultat mais sans le champs libellé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT D.idClient FROM AAA_CLIENT D LEFT OUTER JOIN AAA_TYPE_CLIENT T on D.idTypeClient = T.idTypeClient
toujours 3 champs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT D.idClient FROM AAA_CLIENT D LEFT OUTER JOIN AAA_TYPE_CLIENT T on D.idTypeClient = T.idTypeClient INNER JOIN AAA_TYPE_LIBELLE L on T.idTypeClient = L.idTypeClient WHERE L.idLangue = 1
Pouvez-vous m'aider svp pour avoir les 4 lignes?
ps :
ça aussi ça marche pour 4 lignes sans le champs "libelle"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT D.idClient FROM AAA_CLIENT D LEFT OUTER JOIN (select T.idTypeClient from AAA_TYPE_CLIENT T INNER JOIN AAA_TYPE_LIBELLE L on T.idTypeClient = L.idTypeClient WHERE L.idLangue = 1) JOINTURE ON D.idTypeClient = JOINTURE.idTypeClient
Partager