SQL Server: select plusieurs tables et montrez la relation même NULL

J'ai 3 tables.

Table de discussion

___________________ id_issue | issue | 1 | issue A | 2 | issue B | 3 | issue C | ___________________ 

Table de problème

 _______________________ id_problem | problem | 1 | problem A | 2 | problem B | 3 | problem C | _______________________ 

Table Visi. Avoir fk sur 2 tables avant

 __________________________________________ id_visi | visi | id_problem | id_issue | 1 | visi A | 1 | 1 | 2 | visi B | 1 | 2 | 3 | visi C | 1 | 3 | 4 | visi D | 2 | 1 | 5 | visi E | 2 | 2 | ___________________________________________ 

Je veux combiner 3 tables comme celle-ci. : [MODIFIER]

 _____________________________________ | visi | problem | issue | | visi A | problem A | issue A | | visi B | problem A | issue B | | visi C | problem A | issue C | | visi D | problem B | issue A | | visi E | problem B | issue B | | NULL | problem B | issue C | | NULL | problem C | issue A | | NULL | problem C | issue B | | NULL | problem C | issue C | _____________________________________ 

J'avais essayé la table de JOIN mais cela n'a pas fonctionné. Le résultat n'a pas montré la ligne de NULL.

Vous avez besoin d'une combinaison de CROSS JOIN & LEFT JOIN

 SELECT visi, ip.id_problem, ip.id_issue FROM (SELECT * FROM issue I CROSS JOIN problem P) ip LEFT JOIN visi v ON ip.id_problem = v.id_problem AND ip.id_issue = v.id_issue 

CROSS JOIN : Pour remplir toutes les combinaisons possibles entre deux tables ( Issue et Problem ).

LEFT JOIN : Pour extraire datatables des loggings correspondants de Visi et NULL pour les loggings non correspondants